From 2b354c6ad0d0479dcff68dab23fb0d1143a482c2 Mon Sep 17 00:00:00 2001 From: Paul Wankadia Date: Tue, 30 Apr 2024 01:36:19 +0000 Subject: [PATCH] Use `pkg-config` to find GoogleTest and Benchmark. The GNU make CI workflow is currently broken on macOS because the Homebrew prefix differs between X64 and ARM64. It turns out that the compiler can't find GoogleTest (and Benchmark) anymore via the default path(s). We should really have been specifying the path(s) explicitly long before now anyway. Change-Id: If526389aa89b20b64ccfcc486769050c351e759f Reviewed-on: https://code-review.googlesource.com/c/re2/+/63030 Reviewed-by: Paul Wankadia Reviewed-by: Alex Chernyakhovsky --- Makefile | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 017ab5567..65b52f6ca 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,13 @@ LDABSL=$(shell $(PKG_CONFIG) $(ABSL_DEPS) --libs | sed -e 's/-Wl / /g') # CCICU=$(shell $(PKG_CONFIG) icu-uc --cflags) -DRE2_USE_ICU # LDICU=$(shell $(PKG_CONFIG) icu-uc --libs) +# Build against GoogleTest and Benchmark for... testing and benchmarking. +# Capture only the `-L` flags for now; we will pass the `-l` flags later. +CCGTEST=$(shell $(PKG_CONFIG) gtest --cflags) +LDGTEST=$(shell $(PKG_CONFIG) gtest --libs-only-L) +CCBENCHMARK=$(shell $(PKG_CONFIG) benchmark --cflags) +LDBENCHMARK=$(shell $(PKG_CONFIG) benchmark --libs-only-L) + # To build against PCRE for testing and benchmarking, # uncomment the next two lines: # CCPCRE=-I/usr/local/include -DUSEPCRE @@ -39,8 +46,8 @@ CXX?=g++ CXXFLAGS?=-O3 -g LDFLAGS?= # required -RE2_CXXFLAGS?=-pthread -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -I. $(CCABSL) $(CCICU) $(CCPCRE) -RE2_LDFLAGS?=-pthread $(LDABSL) $(LDICU) $(LDPCRE) +RE2_CXXFLAGS?=-pthread -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -I. $(CCABSL) $(CCICU) $(CCGTEST) $(CCBENCHMARK) $(CCPCRE) +RE2_LDFLAGS?=-pthread $(LDABSL) $(LDICU) $(LDGTEST) $(LDBENCHMARK) $(LDPCRE) AR?=ar ARFLAGS?=rsc NM?=nm @@ -233,22 +240,22 @@ obj/so/libre2.$(SOEXT): $(SOFILES) libre2.symbols libre2.symbols.darwin .PRECIOUS: obj/dbg/test/% obj/dbg/test/%: obj/dbg/libre2.a obj/dbg/re2/testing/%.o $(DTESTOFILES) @mkdir -p obj/dbg/test - $(CXX) -o $@ obj/dbg/re2/testing/$*.o $(DTESTOFILES) -lgtest -lgtest_main obj/dbg/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) + $(CXX) -o $@ obj/dbg/re2/testing/$*.o $(DTESTOFILES) obj/dbg/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) -lgtest -lgtest_main .PRECIOUS: obj/test/% obj/test/%: obj/libre2.a obj/re2/testing/%.o $(TESTOFILES) @mkdir -p obj/test - $(CXX) -o $@ obj/re2/testing/$*.o $(TESTOFILES) -lgtest -lgtest_main obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) + $(CXX) -o $@ obj/re2/testing/$*.o $(TESTOFILES) obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) -lgtest -lgtest_main # Test the shared lib, falling back to the static lib for private symbols .PRECIOUS: obj/so/test/% obj/so/test/%: obj/so/libre2.$(SOEXT) obj/libre2.a obj/re2/testing/%.o $(TESTOFILES) @mkdir -p obj/so/test - $(CXX) -o $@ obj/re2/testing/$*.o $(TESTOFILES) -lgtest -lgtest_main -Lobj/so -lre2 obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) + $(CXX) -o $@ obj/re2/testing/$*.o $(TESTOFILES) -Lobj/so -lre2 obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) -lgtest -lgtest_main obj/test/regexp_benchmark: obj/libre2.a obj/re2/testing/regexp_benchmark.o $(TESTOFILES) @mkdir -p obj/test - $(CXX) -o $@ obj/re2/testing/regexp_benchmark.o $(TESTOFILES) -lgtest -lbenchmark -lbenchmark_main obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) + $(CXX) -o $@ obj/re2/testing/regexp_benchmark.o $(TESTOFILES) obj/libre2.a $(RE2_LDFLAGS) $(LDFLAGS) -lgtest -lbenchmark -lbenchmark_main obj/test/re2_fuzzer: obj/libre2.a obj/re2/fuzzing/re2_fuzzer.o @mkdir -p obj/test