clean up example/test_device clashes

Move the duplicated libevhtp logic to third_party.mk so that multiple
targets can rely on it being set up in the same way.

Delete the duplicate example object rules from tests_schema.mk.  We
already include examples.mk before tests_schema.mk, so we know those
rules are defined for us.  We just need to depend on the output libs.

Finally namespace the daemon variables in examples & tests_schema so
they don't stop on each other in weird ways.

Change-Id: I28fa152d8c8a30c84f7095e335e31a52889b5682
Reviewed-on: https://weave-review.googlesource.com/3152
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/examples/examples.mk b/examples/examples.mk
index 48a1210..555322c 100644
--- a/examples/examples.mk
+++ b/examples/examples.mk
@@ -7,16 +7,6 @@
 
 examples_provider_obj_files := $(EXAMPLES_PROVIDER_SRC_FILES:%.cc=out/$(BUILD_MODE)/%.o)
 
-USE_INTERNAL_LIBEVHTP ?= 1
-
-ifeq (1, $(USE_INTERNAL_LIBEVHTP))
-LIBEVHTP_INCLUDES = -Ithird_party/libevhtp -I$(dir $(third_party_libevhtp_header))
-LIBEVHTP_HEADERS = $(third_party_libevhtp_header)
-else
-LIBEVHTP_INCLUDES =
-LIBEVHTP_HEADERS =
-endif
-
 $(examples_provider_obj_files) : $(LIBEVHTP_HEADERS)
 $(examples_provider_obj_files) : INCLUDES += $(LIBEVHTP_INCLUDES)
 $(examples_provider_obj_files) : out/$(BUILD_MODE)/%.o : %.cc
@@ -43,7 +33,7 @@
 	mkdir -p $(dir $@)
 	$(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $<
 
-daemon_common_flags := \
+example_daemon_common_flags := \
 	-Wl,-rpath=out/$(BUILD_MODE)/ \
 	-levent \
 	-levent_openssl \
@@ -55,31 +45,31 @@
 	-lssl \
 	-lcrypto
 
-daemon_deps := out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so
+example_daemon_deps := out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so
 
 ifeq (1, $(USE_INTERNAL_LIBEVHTP))
-daemon_deps += $(third_party_libevhtp_lib)
+example_daemon_deps += $(third_party_libevhtp_lib)
 else
-daemon_common_flags += -levhtp
+example_daemon_common_flags += -levhtp
 endif
 
-out/$(BUILD_MODE)/weave_daemon_ledflasher : out/$(BUILD_MODE)/examples/daemon/ledflasher/ledflasher.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_ledflasher : out/$(BUILD_MODE)/examples/daemon/ledflasher/ledflasher.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
-out/$(BUILD_MODE)/weave_daemon_light : out/$(BUILD_MODE)/examples/daemon/light/light.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_light : out/$(BUILD_MODE)/examples/daemon/light/light.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
-out/$(BUILD_MODE)/weave_daemon_lock : out/$(BUILD_MODE)/examples/daemon/lock/lock.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_lock : out/$(BUILD_MODE)/examples/daemon/lock/lock.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
-out/$(BUILD_MODE)/weave_daemon_oven : out/$(BUILD_MODE)/examples/daemon/oven/oven.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_oven : out/$(BUILD_MODE)/examples/daemon/oven/oven.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
-out/$(BUILD_MODE)/weave_daemon_sample : out/$(BUILD_MODE)/examples/daemon/sample/sample.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_sample : out/$(BUILD_MODE)/examples/daemon/sample/sample.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
-out/$(BUILD_MODE)/weave_daemon_speaker : out/$(BUILD_MODE)/examples/daemon/speaker/speaker.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_speaker : out/$(BUILD_MODE)/examples/daemon/speaker/speaker.o $(example_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
 
 all-examples : out/$(BUILD_MODE)/weave_daemon_ledflasher out/$(BUILD_MODE)/weave_daemon_light out/$(BUILD_MODE)/weave_daemon_lock out/$(BUILD_MODE)/weave_daemon_oven out/$(BUILD_MODE)/weave_daemon_sample out/$(BUILD_MODE)/weave_daemon_speaker
 
diff --git a/tests_schema/tests_schema.mk b/tests_schema/tests_schema.mk
index 19bdb26..73dfefd 100644
--- a/tests_schema/tests_schema.mk
+++ b/tests_schema/tests_schema.mk
@@ -3,29 +3,7 @@
 # found in the LICENSE file.
 
 ###
-# examples
-
-tests_schema_provider_obj_files := $(EXAMPLES_PROVIDER_SRC_FILES:%.cc=out/$(BUILD_MODE)/%.o)
-
-USE_INTERNAL_LIBEVHTP ?= 1
-
-ifeq (1, $(USE_INTERNAL_LIBEVHTP))
-LIBEVHTP_INCLUDES = -Ithird_party/libevhtp -I$(dir $(third_party_libevhtp_header))
-LIBEVHTP_HEADERS = $(third_party_libevhtp_header)
-else
-LIBEVHTP_INCLUDES =
-LIBEVHTP_HEADERS =
-endif
-
-$(tests_schema_provider_obj_files) : $(LIBEVHTP_HEADERS)
-$(tests_schema_provider_obj_files) : INCLUDES += $(LIBEVHTP_INCLUDES)
-$(tests_schema_provider_obj_files) : out/$(BUILD_MODE)/%.o : %.cc
-	mkdir -p $(dir $@)
-	$(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $<
-
-out/$(BUILD_MODE)/examples_provider.a : $(tests_schema_provider_obj_files)
-	rm -f $@
-	$(AR) crsT $@ $^
+# test_schema
 
 TESTS_SCHEMA_DAEMON_SRC_FILES := \
 	tests_schema/daemon/testdevice/testdevice.cc
@@ -38,7 +16,7 @@
 	mkdir -p $(dir $@)
 	$(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $<
 
-daemon_common_flags := \
+tests_schema_daemon_common_flags := \
 	-Wl,-rpath=out/$(BUILD_MODE)/ \
 	-levent \
 	-levent_openssl \
@@ -50,16 +28,16 @@
 	-lssl \
 	-lcrypto
 
-daemon_deps := out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so
+tests_schema_daemon_deps := out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so
 
 ifeq (1, $(USE_INTERNAL_LIBEVHTP))
-daemon_deps += $(third_party_libevhtp_lib)
+tests_schema_daemon_deps += $(third_party_libevhtp_lib)
 else
-daemon_common_flags += -levhtp
+tests_schema_daemon_common_flags += -levhtp
 endif
 
-out/$(BUILD_MODE)/weave_daemon_testdevice : out/$(BUILD_MODE)/tests_schema/daemon/testdevice/testdevice.o $(daemon_deps)
-	$(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags)
+out/$(BUILD_MODE)/weave_daemon_testdevice : out/$(BUILD_MODE)/tests_schema/daemon/testdevice/testdevice.o $(tests_schema_daemon_deps)
+	$(CXX) -o $@ $^ $(CFLAGS) $(tests_schema_daemon_common_flags)
 
 all-testdevices : out/$(BUILD_MODE)/weave_daemon_testdevice
 
diff --git a/third_party/third_party.mk b/third_party/third_party.mk
index 18f9b98..e1da63c 100644
--- a/third_party/third_party.mk
+++ b/third_party/third_party.mk
@@ -94,3 +94,14 @@
 
 clean-libevhtp :
 	rm -rf $(third_party_libevhtp)
+
+# These settings are exported for other code to use as needed.
+USE_INTERNAL_LIBEVHTP ?= 1
+
+ifeq (1, $(USE_INTERNAL_LIBEVHTP))
+LIBEVHTP_INCLUDES = -Ithird_party/libevhtp -I$(dir $(third_party_libevhtp_header))
+LIBEVHTP_HEADERS = $(third_party_libevhtp_header)
+else
+LIBEVHTP_INCLUDES =
+LIBEVHTP_HEADERS =
+endif