libweave: Add build of share library with light version of base lib

This build type has own test runner with some base unittests.

BUG=brillo:1256
TEST=`FEATURES=test emerge-gizmo libweave buffet`

Change-Id: I1f15942b59dce85f47fbf6a04f5ed568d91def2b
Reviewed-on: https://chromium-review.googlesource.com/294174
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/libweave.gyp b/libweave/libweave.gyp
index d5f48b2..e17ac6a 100644
--- a/libweave/libweave.gyp
+++ b/libweave/libweave.gyp
@@ -1,107 +1,111 @@
 {
+ 'includes': [
+    'libweave.gypi',
+  ],
   'target_defaults': {
     'variables': {
       'deps': [
         'expat',
-        'libchrome-<(libbase_ver)',
         'libcrypto',
       ],
     },
     'include_dirs': [
       '.',
       '../libweave/include',
+      '../libweave/third_party/modp_b64/modp_b64/',
     ],
   },
   'targets': [
     {
-      'target_name': 'libweave_external',
-      'type': 'static_library',
-      'include_dirs': [
-        '../libweave/third_party/modp_b64/modp_b64/',
-      ],
-      'sources': [
-        'external/crypto/p224.cc',
-        'external/crypto/p224_spake.cc',
-        'external/crypto/sha2.cc',
-        'third_party/modp_b64/modp_b64.cc',
-      ],
-    },
-    {
       'target_name': 'libweave_common',
       'type': 'static_library',
       'cflags!': ['-fPIE'],
       'cflags': ['-fPIC'],
+      'variables': {
+        'deps': [
+          'libchrome-<(libbase_ver)',
+        ],
+      },
       'sources': [
-        'src/backoff_entry.cc',
-        'src/base_api_handler.cc',
-        'src/commands/cloud_command_proxy.cc',
-        'src/commands/command_definition.cc',
-        'src/commands/command_dictionary.cc',
-        'src/commands/command_instance.cc',
-        'src/commands/command_manager.cc',
-        'src/commands/command_queue.cc',
-        'src/commands/object_schema.cc',
-        'src/commands/prop_constraints.cc',
-        'src/commands/prop_types.cc',
-        'src/commands/prop_values.cc',
-        'src/commands/schema_constants.cc',
-        'src/commands/schema_utils.cc',
-        'src/commands/user_role.cc',
-        'src/config.cc',
-        'src/data_encoding.cc',
-        'src/device_manager.cc',
-        'src/device_registration_info.cc',
-        'src/error.cc',
-        'src/http_constants.cc',
-        'src/json_error_codes.cc',
-        'src/notification/notification_parser.cc',
-        'src/notification/pull_channel.cc',
-        'src/notification/xml_node.cc',
-        'src/notification/xmpp_channel.cc',
-        'src/notification/xmpp_iq_stanza_handler.cc',
-        'src/notification/xmpp_stream_parser.cc',
-        'src/privet/cloud_delegate.cc',
-        'src/privet/constants.cc',
-        'src/privet/device_delegate.cc',
-        'src/privet/openssl_utils.cc',
-        'src/privet/privet_handler.cc',
-        'src/privet/privet_manager.cc',
-        'src/privet/privet_types.cc',
-        'src/privet/publisher.cc',
-        'src/privet/security_manager.cc',
-        'src/privet/wifi_bootstrap_manager.cc',
-        'src/privet/wifi_ssid_generator.cc',
-        'src/registration_status.cc',
-        'src/states/error_codes.cc',
-        'src/states/state_change_queue.cc',
-        'src/states/state_manager.cc',
-        'src/states/state_package.cc',
-        'src/string_utils.cc',
-        'src/utils.cc',
+        '<@(weave_sources)',
       ],
     },
     {
       'target_name': 'libweave-<(libbase_ver)',
       'type': 'shared_library',
+      'variables': {
+        'deps': [
+          'libchrome-<(libbase_ver)',
+        ],
+      },
       'includes': [
         '../common-mk/deps.gypi',
       ],
       'dependencies': [
         'libweave_common',
-        'libweave_external',
       ],
       'sources': [
-        'src/empty.cc',
+        'src/empty.cc'
       ],
     },
     {
       'target_name': 'libweave-test-<(libbase_ver)',
       'type': 'static_library',
       'standalone_static_library': 1,
+      'variables': {
+        'deps': [
+          'libchrome-<(libbase_ver)',
+        ],
+      },
       'sources': [
-        'src/commands/mock_command.cc',
-        'src/commands/unittest_utils.cc',
-        'src/mock_http_client.cc',
+        '<@(weave_test_sources)',
+      ],
+      'includes': ['../common-mk/deps.gypi'],
+    },
+
+    {
+      'target_name': 'libweave_base_common',
+      'type': 'static_library',
+      'cflags!': ['-fPIE'],
+      'cflags': [
+        '-fPIC',
+        '-Wno-format-nonliteral',
+        '-Wno-char-subscripts',
+        '-Wno-deprecated-register',
+      ],
+      'include_dirs': [
+        '../libweave/external',
+      ],
+      'sources': [
+        '<@(weave_sources)',
+        '<@(base_sources)',
+      ],
+    },
+    {
+      'target_name': 'libweave_base',
+      'type': 'shared_library',
+      'include_dirs': [
+        '../libweave/external',
+      ],
+      'includes': [
+        '../common-mk/deps.gypi',
+      ],
+      'dependencies': [
+        'libweave_base_common',
+      ],
+      'sources': [
+        'src/empty.cc'
+      ],
+    },
+    {
+      'target_name': 'libweave_base-test',
+      'type': 'static_library',
+      'standalone_static_library': 1,
+      'include_dirs': [
+        '../libweave/external',
+      ],
+      'sources': [
+        '<@(weave_test_sources)',
       ],
       'includes': ['../common-mk/deps.gypi'],
     },
@@ -114,46 +118,33 @@
           'type': 'executable',
           'variables': {
             'deps': [
-              'libchrome-test-<(libbase_ver)',
+              'libchrome-<(libbase_ver)',
             ],
           },
           'dependencies': [
             'libweave_common',
-            'libweave_external',
             'libweave-test-<(libbase_ver)',
           ],
           'includes': ['../common-mk/common_test.gypi'],
           'sources': [
-            'external/crypto/p224_spake_unittest.cc',
-            'external/crypto/p224_unittest.cc',
-            'external/crypto/sha2_unittest.cc',
-            'src/backoff_entry_unittest.cc',
-            'src/base_api_handler_unittest.cc',
-            'src/commands/cloud_command_proxy_unittest.cc',
-            'src/commands/command_definition_unittest.cc',
-            'src/commands/command_dictionary_unittest.cc',
-            'src/commands/command_instance_unittest.cc',
-            'src/commands/command_manager_unittest.cc',
-            'src/commands/command_queue_unittest.cc',
-            'src/commands/object_schema_unittest.cc',
-            'src/commands/schema_utils_unittest.cc',
-            'src/config_unittest.cc',
-            'src/data_encoding_unittest.cc',
-            'src/device_registration_info_unittest.cc',
-            'src/error_unittest.cc',
-            'src/notification/notification_parser_unittest.cc',
-            'src/notification/xml_node_unittest.cc',
-            'src/notification/xmpp_channel_unittest.cc',
-            'src/notification/xmpp_iq_stanza_handler_unittest.cc',
-            'src/notification/xmpp_stream_parser_unittest.cc',
-            'src/privet/privet_handler_unittest.cc',
-            'src/privet/security_manager_unittest.cc',
-            'src/privet/wifi_ssid_generator_unittest.cc',
-            'src/states/state_change_queue_unittest.cc',
-            'src/states/state_manager_unittest.cc',
-            'src/states/state_package_unittest.cc',
-            'src/string_utils_unittest.cc',
-            'src/weave_testrunner.cc',
+            '<@(weave_unittest_sources)',
+          ],
+        },
+        {
+          'target_name': 'libweave_base_testrunner',
+          'type': 'executable',
+          'cflags': ['-Wno-format-nonliteral'],
+          'include_dirs': [
+            '../libweave/external',
+          ],
+          'dependencies': [
+            'libweave_base_common',
+            'libweave_base-test',
+          ],
+          'includes': ['../common-mk/common_test.gypi'],
+          'sources': [
+            '<@(weave_unittest_sources)',
+            '<@(base_unittests)',
           ],
         },
       ],
diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
new file mode 100644
index 0000000..5543575
--- /dev/null
+++ b/libweave/libweave.gypi
@@ -0,0 +1,150 @@
+{
+  'variables': {
+    'weave_sources': [
+      'external/crypto/p224.cc',
+      'external/crypto/p224_spake.cc',
+      'external/crypto/sha2.cc',
+      'src/backoff_entry.cc',
+      'src/base_api_handler.cc',
+      'src/commands/cloud_command_proxy.cc',
+      'src/commands/command_definition.cc',
+      'src/commands/command_dictionary.cc',
+      'src/commands/command_instance.cc',
+      'src/commands/command_manager.cc',
+      'src/commands/command_queue.cc',
+      'src/commands/object_schema.cc',
+      'src/commands/prop_constraints.cc',
+      'src/commands/prop_types.cc',
+      'src/commands/prop_values.cc',
+      'src/commands/schema_constants.cc',
+      'src/commands/schema_utils.cc',
+      'src/commands/user_role.cc',
+      'src/config.cc',
+      'src/data_encoding.cc',
+      'src/device_manager.cc',
+      'src/device_registration_info.cc',
+      'src/error.cc',
+      'src/http_constants.cc',
+      'src/json_error_codes.cc',
+      'src/notification/notification_parser.cc',
+      'src/notification/pull_channel.cc',
+      'src/notification/xml_node.cc',
+      'src/notification/xmpp_channel.cc',
+      'src/notification/xmpp_iq_stanza_handler.cc',
+      'src/notification/xmpp_stream_parser.cc',
+      'src/privet/cloud_delegate.cc',
+      'src/privet/constants.cc',
+      'src/privet/device_delegate.cc',
+      'src/privet/openssl_utils.cc',
+      'src/privet/privet_handler.cc',
+      'src/privet/privet_manager.cc',
+      'src/privet/privet_types.cc',
+      'src/privet/publisher.cc',
+      'src/privet/security_manager.cc',
+      'src/privet/wifi_bootstrap_manager.cc',
+      'src/privet/wifi_ssid_generator.cc',
+      'src/registration_status.cc',
+      'src/states/error_codes.cc',
+      'src/states/state_change_queue.cc',
+      'src/states/state_manager.cc',
+      'src/states/state_package.cc',
+      'src/string_utils.cc',
+      'src/utils.cc',
+      'third_party/modp_b64/modp_b64.cc',
+    ],
+    'weave_test_sources': [
+      'src/commands/mock_command.cc',
+      'src/commands/unittest_utils.cc',
+      'src/mock_http_client.cc',
+    ],
+    'weave_unittest_sources': [
+      'external/crypto/p224_spake_unittest.cc',
+      'external/crypto/p224_unittest.cc',
+      'external/crypto/sha2_unittest.cc',
+      'src/backoff_entry_unittest.cc',
+      'src/base_api_handler_unittest.cc',
+      'src/commands/cloud_command_proxy_unittest.cc',
+      'src/commands/command_definition_unittest.cc',
+      'src/commands/command_dictionary_unittest.cc',
+      'src/commands/command_instance_unittest.cc',
+      'src/commands/command_manager_unittest.cc',
+      'src/commands/command_queue_unittest.cc',
+      'src/commands/object_schema_unittest.cc',
+      'src/commands/schema_utils_unittest.cc',
+      'src/config_unittest.cc',
+      'src/data_encoding_unittest.cc',
+      'src/device_registration_info_unittest.cc',
+      'src/error_unittest.cc',
+      'src/notification/notification_parser_unittest.cc',
+      'src/notification/xml_node_unittest.cc',
+      'src/notification/xmpp_channel_unittest.cc',
+      'src/notification/xmpp_iq_stanza_handler_unittest.cc',
+      'src/notification/xmpp_stream_parser_unittest.cc',
+      'src/privet/privet_handler_unittest.cc',
+      'src/privet/security_manager_unittest.cc',
+      'src/privet/wifi_ssid_generator_unittest.cc',
+      'src/states/state_change_queue_unittest.cc',
+      'src/states/state_manager_unittest.cc',
+      'src/states/state_package_unittest.cc',
+      'src/string_utils_unittest.cc',
+      'src/weave_testrunner.cc',
+    ],
+    'base_sources': [
+      'external/base/bind_helpers.cc',
+      'external/base/callback_internal.cc',
+      'external/base/guid_posix.cc',
+      'external/base/json/json_parser.cc',
+      'external/base/json/json_reader.cc',
+      'external/base/json/json_writer.cc',
+      'external/base/json/string_escape.cc',
+      'external/base/memory/ref_counted.cc',
+      'external/base/logging.cc',
+      'external/base/location.cc',
+      'external/base/memory/weak_ptr.cc',
+      'external/base/memory/weak_ptr.cc',
+      'external/base/rand_util.cc',
+      'external/base/rand_util_posix.cc',
+      'external/base/strings/string_number_conversions.cc',
+      'external/base/strings/string_piece.cc',
+      'external/base/strings/stringprintf.cc',
+      'external/base/strings/string_util.cc',
+      'external/base/strings/string_util_constants.cc',
+      'external/base/strings/utf_string_conversion_utils.cc',
+      'external/base/third_party/dmg_fp/g_fmt.cc',
+      'external/base/third_party/dmg_fp/dtoa.cc',
+      'external/base/third_party/icu/icu_utf.cc',
+      'external/base/time/clock.cc',
+      'external/base/time/time.cc',
+      'external/base/time/time_posix.cc',
+      'external/base/values.cc',
+    ],
+    'base_unittests': [
+      'external/base/atomicops_unittest.cc',
+      'external/base/bind_unittest.cc',
+      'external/base/callback_list_unittest.cc',
+      'external/base/callback_unittest.cc',
+      'external/base/guid_unittest.cc',
+      'external/base/json/json_parser_unittest.cc',
+      'external/base/json/json_reader_unittest.cc',
+      'external/base/json/json_writer_unittest.cc',
+      'external/base/json/string_escape_unittest.cc',
+      'external/base/logging_unittest.cc',
+      'external/base/memory/ref_counted_unittest.cc',
+      'external/base/memory/scoped_ptr_unittest.cc',
+      'external/base/memory/weak_ptr_unittest.cc',
+      'external/base/move_unittest.cc',
+      'external/base/numerics/safe_numerics_unittest.cc',
+      'external/base/observer_list_unittest.cc',
+      'external/base/rand_util_unittest.cc',
+      'external/base/scoped_clear_errno_unittest.cc',
+      'external/base/strings/string_number_conversions_unittest.cc',
+      'external/base/strings/string_piece_unittest.cc',
+      'external/base/strings/string_util_unittest.cc',
+      'external/base/strings/stringprintf_unittest.cc',
+      'external/base/template_util_unittest.cc',
+      'external/base/time/time_unittest.cc',
+      'external/base/tuple_unittest.cc',
+      'external/base/values_unittest.cc',
+    ],
+  },
+}