libweave: Add clang support to Makefile. To use: "CLANG=1 make all -j" BUG: 26508278 Change-Id: I6b09e6574634d8e07ce2438c31907466e953eb0f Reviewed-on: https://weave-review.googlesource.com/2185 Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/Makefile b/Makefile index 0eb4e12..c49462f 100644 --- a/Makefile +++ b/Makefile
@@ -49,6 +49,23 @@ CFLAGS_CC := \ -std=c++11 +comma := , +ifeq (1, $(CLANG)) + CC = $(shell which clang-3.6) + CXX = $(shell which clang++-3.6) + CFLAGS := $(filter-out -Wl$(comma)--exclude-libs$(comma)ALL,$(CFLAGS)) + CFLAGS += \ + -fno-omit-frame-pointer \ + -Wno-deprecated-register \ + -Wno-inconsistent-missing-override + ifeq (Debug, $(BUILD_MODE)) + CFLAGS += \ + -fsanitize=address + LDFLAGS += \ + -fsanitize=address + endif +endif + include file_lists.mk third_party.mk examples.mk tests.mk ###
diff --git a/examples.mk b/examples.mk index 970969e..a25194c 100644 --- a/examples.mk +++ b/examples.mk
@@ -35,22 +35,22 @@ -lcrypto out/$(BUILD_MODE)/weave_daemon_ledflasher : out/$(BUILD_MODE)/examples/daemon/ledflasher/ledflasher.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags) out/$(BUILD_MODE)/weave_daemon_light : out/$(BUILD_MODE)/examples/daemon/light/light.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags) out/$(BUILD_MODE)/weave_daemon_lock : out/$(BUILD_MODE)/examples/daemon/lock/lock.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags) out/$(BUILD_MODE)/weave_daemon_oven : out/$(BUILD_MODE)/examples/daemon/oven/oven.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags) out/$(BUILD_MODE)/weave_daemon_sample : out/$(BUILD_MODE)/examples/daemon/sample/sample.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(daemon_common_flags) out/$(BUILD_MODE)/weave_daemon_speaker : out/$(BUILD_MODE)/examples/daemon/speaker/speaker.o out/$(BUILD_MODE)/examples_provider.a out/$(BUILD_MODE)/libweave.so - $(CXX) -o $@ $^ $(daemon_common_flags) + $(CXX) -o $@ $^ $(CFLAGS) $(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.mk b/tests.mk index 64fc622..aa9ee53 100644 --- a/tests.mk +++ b/tests.mk
@@ -23,7 +23,7 @@ $(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $< out/$(BUILD_MODE)/libweave_testrunner : $(weave_unittest_obj_files) $(third_party_chromium_crypto_unittest_obj_files) $(third_party_chromium_base_unittest_obj_files) out/$(BUILD_MODE)/libweave_common.a out/$(BUILD_MODE)/libweave-test.a - $(CXX) -o $@ $^ -lcrypto -lexpat -lgmock -lgtest -lpthread -lrt -Lthird_party/lib + $(CXX) -o $@ $^ $(CFLAGS) -lcrypto -lexpat -lgmock -lgtest -lpthread -lrt -Lthird_party/lib test : out/$(BUILD_MODE)/libweave_testrunner $< @@ -39,7 +39,7 @@ $(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $< out/$(BUILD_MODE)/libweave_exports_testrunner : $(weave_exports_unittest_obj_files) out/$(BUILD_MODE)/libweave.so out/$(BUILD_MODE)/libweave-test.a out/$(BUILD_MODE)/src/test/weave_testrunner.o - $(CXX) -o $@ $^ -lcrypto -lexpat -lgmock -lgtest -lpthread -lrt -Lthird_party/lib -Wl,-rpath=out/$(BUILD_MODE)/ + $(CXX) -o $@ $^ $(CFLAGS) -lcrypto -lexpat -lgmock -lgtest -lpthread -lrt -Lthird_party/lib -Wl,-rpath=out/$(BUILD_MODE)/ export-test : out/$(BUILD_MODE)/libweave_exports_testrunner $<