|
| 1 | +# -*- Makefile -*- for abseil |
| 2 | + |
| 3 | +.SECONDEXPANSION: |
| 4 | +.SUFFIXES: |
| 5 | + |
| 6 | +ifneq ($(findstring $(MAKEFLAGS),s),s) |
| 7 | +ifndef V |
| 8 | + QUIET = @ |
| 9 | + QUIET_CXX = @echo ' ' CXX $<; |
| 10 | + QUIET_AR = @echo ' ' AR $@; |
| 11 | + QUIET_RANLIB = @echo ' ' RANLIB $@; |
| 12 | + QUIET_INSTALL = @echo ' ' INSTALL $<; |
| 13 | + export V |
| 14 | +endif |
| 15 | +endif |
| 16 | + |
| 17 | +LIB = libabseil.a |
| 18 | +AR ?= ar |
| 19 | +ARFLAGS ?= rc |
| 20 | +CXX ?= g++ |
| 21 | +RANLIB ?= ranlib |
| 22 | +RM ?= rm -f |
| 23 | + |
| 24 | +BUILD_DIR := build |
| 25 | +BUILD_ID ?= default-build-id |
| 26 | +OBJ_DIR := $(BUILD_DIR)/$(BUILD_ID) |
| 27 | + |
| 28 | +ifeq (,$(BUILD_ID)) |
| 29 | +$(error BUILD_ID cannot be an empty string) |
| 30 | +endif |
| 31 | + |
| 32 | +prefix ?= /usr/local |
| 33 | +libdir := $(prefix)/lib |
| 34 | +includedir := $(prefix)/include |
| 35 | + |
| 36 | +HEADERS := \ |
| 37 | + $(shell find absl -type f -name '*.h') \ |
| 38 | + $(shell find absl -type f -name '*.inc') \ |
| 39 | + |
| 40 | +SOURCES := \ |
| 41 | + absl/base/internal/cycleclock.cc \ |
| 42 | + absl/base/internal/low_level_alloc.cc \ |
| 43 | + absl/base/internal/poison.cc \ |
| 44 | + absl/base/internal/raw_logging.cc \ |
| 45 | + absl/base/internal/scoped_set_env.cc \ |
| 46 | + absl/base/internal/spinlock.cc \ |
| 47 | + absl/base/internal/spinlock_wait.cc \ |
| 48 | + absl/base/internal/strerror.cc \ |
| 49 | + absl/base/internal/sysinfo.cc \ |
| 50 | + absl/base/internal/thread_identity.cc \ |
| 51 | + absl/base/internal/throw_delegate.cc \ |
| 52 | + absl/base/internal/tracing.cc \ |
| 53 | + absl/base/internal/unscaledcycleclock.cc \ |
| 54 | + absl/base/log_severity.cc \ |
| 55 | + absl/container/internal/hashtablez_sampler.cc \ |
| 56 | + absl/container/internal/hashtablez_sampler_force_weak_definition.cc \ |
| 57 | + absl/container/internal/raw_hash_set.cc \ |
| 58 | + absl/crc/crc32c.cc \ |
| 59 | + absl/crc/internal/cpu_detect.cc \ |
| 60 | + absl/crc/internal/crc.cc \ |
| 61 | + absl/crc/internal/crc_cord_state.cc \ |
| 62 | + absl/crc/internal/crc_memcpy_fallback.cc \ |
| 63 | + absl/crc/internal/crc_memcpy_x86_arm_combined.cc \ |
| 64 | + absl/crc/internal/crc_non_temporal_memcpy.cc \ |
| 65 | + absl/crc/internal/crc_x86_arm_combined.cc \ |
| 66 | + absl/debugging/failure_signal_handler.cc \ |
| 67 | + absl/debugging/internal/address_is_readable.cc \ |
| 68 | + absl/debugging/internal/decode_rust_punycode.cc \ |
| 69 | + absl/debugging/internal/demangle.cc \ |
| 70 | + absl/debugging/internal/demangle_rust.cc \ |
| 71 | + absl/debugging/internal/elf_mem_image.cc \ |
| 72 | + absl/debugging/internal/examine_stack.cc \ |
| 73 | + absl/debugging/internal/stack_consumption.cc \ |
| 74 | + absl/debugging/internal/utf8_for_code_point.cc \ |
| 75 | + absl/debugging/internal/vdso_support.cc \ |
| 76 | + absl/debugging/leak_check.cc \ |
| 77 | + absl/debugging/stacktrace.cc \ |
| 78 | + absl/debugging/symbolize.cc \ |
| 79 | + absl/flags/commandlineflag.cc \ |
| 80 | + absl/flags/internal/commandlineflag.cc \ |
| 81 | + absl/flags/internal/flag.cc \ |
| 82 | + absl/flags/internal/private_handle_accessor.cc \ |
| 83 | + absl/flags/internal/program_name.cc \ |
| 84 | + absl/flags/internal/usage.cc \ |
| 85 | + absl/flags/marshalling.cc \ |
| 86 | + absl/flags/parse.cc \ |
| 87 | + absl/flags/reflection.cc \ |
| 88 | + absl/flags/usage.cc \ |
| 89 | + absl/flags/usage_config.cc \ |
| 90 | + absl/hash/internal/city.cc \ |
| 91 | + absl/hash/internal/hash.cc \ |
| 92 | + absl/hash/internal/low_level_hash.cc \ |
| 93 | + absl/log/die_if_null.cc \ |
| 94 | + absl/log/flags.cc \ |
| 95 | + absl/log/globals.cc \ |
| 96 | + absl/log/initialize.cc \ |
| 97 | + absl/log/internal/check_op.cc \ |
| 98 | + absl/log/internal/conditions.cc \ |
| 99 | + absl/log/internal/fnmatch.cc \ |
| 100 | + absl/log/internal/globals.cc \ |
| 101 | + absl/log/internal/log_format.cc \ |
| 102 | + absl/log/internal/log_message.cc \ |
| 103 | + absl/log/internal/log_sink_set.cc \ |
| 104 | + absl/log/internal/nullguard.cc \ |
| 105 | + absl/log/internal/proto.cc \ |
| 106 | + absl/log/internal/structured_proto.cc \ |
| 107 | + absl/log/internal/vlog_config.cc \ |
| 108 | + absl/log/log_sink.cc \ |
| 109 | + absl/numeric/int128.cc \ |
| 110 | + absl/profiling/internal/exponential_biased.cc \ |
| 111 | + absl/profiling/internal/periodic_sampler.cc \ |
| 112 | + absl/random/discrete_distribution.cc \ |
| 113 | + absl/random/gaussian_distribution.cc \ |
| 114 | + absl/random/internal/chi_square.cc \ |
| 115 | + absl/random/internal/pool_urbg.cc \ |
| 116 | + absl/random/internal/randen.cc \ |
| 117 | + absl/random/internal/randen_detect.cc \ |
| 118 | + absl/random/internal/randen_hwaes.cc \ |
| 119 | + absl/random/internal/randen_round_keys.cc \ |
| 120 | + absl/random/internal/randen_slow.cc \ |
| 121 | + absl/random/internal/seed_material.cc \ |
| 122 | + absl/random/seed_gen_exception.cc \ |
| 123 | + absl/random/seed_sequences.cc \ |
| 124 | + absl/status/internal/status_internal.cc \ |
| 125 | + absl/status/status.cc \ |
| 126 | + absl/status/status_payload_printer.cc \ |
| 127 | + absl/status/statusor.cc \ |
| 128 | + absl/strings/ascii.cc \ |
| 129 | + absl/strings/charconv.cc \ |
| 130 | + absl/strings/cord.cc \ |
| 131 | + absl/strings/cord_analysis.cc \ |
| 132 | + absl/strings/escaping.cc \ |
| 133 | + absl/strings/internal/charconv_bigint.cc \ |
| 134 | + absl/strings/internal/charconv_parse.cc \ |
| 135 | + absl/strings/internal/cord_internal.cc \ |
| 136 | + absl/strings/internal/cord_rep_btree.cc \ |
| 137 | + absl/strings/internal/cord_rep_btree_navigator.cc \ |
| 138 | + absl/strings/internal/cord_rep_btree_reader.cc \ |
| 139 | + absl/strings/internal/cord_rep_consume.cc \ |
| 140 | + absl/strings/internal/cord_rep_crc.cc \ |
| 141 | + absl/strings/internal/cordz_functions.cc \ |
| 142 | + absl/strings/internal/cordz_handle.cc \ |
| 143 | + absl/strings/internal/cordz_info.cc \ |
| 144 | + absl/strings/internal/cordz_sample_token.cc \ |
| 145 | + absl/strings/internal/damerau_levenshtein_distance.cc \ |
| 146 | + absl/strings/internal/escaping.cc \ |
| 147 | + absl/strings/internal/memutil.cc \ |
| 148 | + absl/strings/internal/ostringstream.cc \ |
| 149 | + absl/strings/internal/pow10_helper.cc \ |
| 150 | + absl/strings/internal/str_format/arg.cc \ |
| 151 | + absl/strings/internal/str_format/bind.cc \ |
| 152 | + absl/strings/internal/str_format/extension.cc \ |
| 153 | + absl/strings/internal/str_format/float_conversion.cc \ |
| 154 | + absl/strings/internal/str_format/output.cc \ |
| 155 | + absl/strings/internal/str_format/parser.cc \ |
| 156 | + absl/strings/internal/stringify_sink.cc \ |
| 157 | + absl/strings/internal/utf8.cc \ |
| 158 | + absl/strings/match.cc \ |
| 159 | + absl/strings/numbers.cc \ |
| 160 | + absl/strings/str_cat.cc \ |
| 161 | + absl/strings/str_replace.cc \ |
| 162 | + absl/strings/str_split.cc \ |
| 163 | + absl/strings/string_view.cc \ |
| 164 | + absl/strings/substitute.cc \ |
| 165 | + absl/synchronization/barrier.cc \ |
| 166 | + absl/synchronization/blocking_counter.cc \ |
| 167 | + absl/synchronization/internal/create_thread_identity.cc \ |
| 168 | + absl/synchronization/internal/futex_waiter.cc \ |
| 169 | + absl/synchronization/internal/graphcycles.cc \ |
| 170 | + absl/synchronization/internal/kernel_timeout.cc \ |
| 171 | + absl/synchronization/internal/per_thread_sem.cc \ |
| 172 | + absl/synchronization/internal/pthread_waiter.cc \ |
| 173 | + absl/synchronization/internal/sem_waiter.cc \ |
| 174 | + absl/synchronization/internal/stdcpp_waiter.cc \ |
| 175 | + absl/synchronization/internal/waiter_base.cc \ |
| 176 | + absl/synchronization/internal/win32_waiter.cc \ |
| 177 | + absl/synchronization/mutex.cc \ |
| 178 | + absl/synchronization/notification.cc \ |
| 179 | + absl/time/civil_time.cc \ |
| 180 | + absl/time/clock.cc \ |
| 181 | + absl/time/duration.cc \ |
| 182 | + absl/time/format.cc \ |
| 183 | + absl/time/internal/cctz/src/civil_time_detail.cc \ |
| 184 | + absl/time/internal/cctz/src/time_zone_fixed.cc \ |
| 185 | + absl/time/internal/cctz/src/time_zone_format.cc \ |
| 186 | + absl/time/internal/cctz/src/time_zone_if.cc \ |
| 187 | + absl/time/internal/cctz/src/time_zone_impl.cc \ |
| 188 | + absl/time/internal/cctz/src/time_zone_info.cc \ |
| 189 | + absl/time/internal/cctz/src/time_zone_libc.cc \ |
| 190 | + absl/time/internal/cctz/src/time_zone_lookup.cc \ |
| 191 | + absl/time/internal/cctz/src/time_zone_posix.cc \ |
| 192 | + absl/time/internal/cctz/src/zone_info_source.cc \ |
| 193 | + absl/time/time.cc \ |
| 194 | + |
| 195 | +SOURCES := $(wildcard $(SOURCES)) |
| 196 | + |
| 197 | +HEADERS_INST := $(filter %.h,$(patsubst %,$(includedir)/%,$(HEADERS))) |
| 198 | +HEADERS_INST += $(filter %.inc,$(patsubst %,$(includedir)/%,$(HEADERS))) |
| 199 | +OBJECTS := $(patsubst %.cc,$(OBJ_DIR)/%.o,$(SOURCES)) |
| 200 | + |
| 201 | +CFLAGS ?= -O2 |
| 202 | +CFLAGS += -I. -std=c++17 |
| 203 | + |
| 204 | +.PHONY: install |
| 205 | + |
| 206 | +all: $(OBJ_DIR)/$(LIB) |
| 207 | + |
| 208 | +$(includedir)/%.h: %.h | $$(@D)/. |
| 209 | + $(QUIET_INSTALL)cp $< $@ |
| 210 | + @chmod 0644 $@ |
| 211 | + |
| 212 | +$(includedir)/%.inc: %.inc | $$(@D)/. |
| 213 | + $(QUIET_INSTALL)cp $< $@ |
| 214 | + @chmod 0644 $@ |
| 215 | + |
| 216 | +$(libdir)/%.a: $(OBJ_DIR)/%.a |
| 217 | + -@if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi |
| 218 | + $(QUIET_INSTALL)cp $< $@ |
| 219 | + @chmod 0644 $@ |
| 220 | + |
| 221 | +install: $(HEADERS_INST) $(libdir)/$(LIB) |
| 222 | + |
| 223 | +clean: |
| 224 | + $(RM) -r $(OBJ_DIR) |
| 225 | + |
| 226 | +distclean: |
| 227 | + $(RM) -r $(BUILD_DIR) |
| 228 | + |
| 229 | +$(OBJ_DIR)/$(LIB): $(OBJECTS) |
| 230 | + $(QUIET_AR)$(AR) $(ARFLAGS) $@ $^ |
| 231 | + $(QUIET_RANLIB)$(RANLIB) $@ |
| 232 | + |
| 233 | +$(OBJ_DIR)/%.o: %.cc $(OBJ_DIR)/.cflags | $$(@D)/. |
| 234 | + $(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) -o $@ -c $< |
| 235 | + |
| 236 | +.PRECIOUS: $(OBJ_DIR)/. $(OBJ_DIR)%/. $(includedir)/. $(includedir)%/. |
| 237 | + |
| 238 | +$(OBJ_DIR)/.: |
| 239 | + $(QUIET)mkdir -p $@ |
| 240 | + |
| 241 | +$(OBJ_DIR)%/.: |
| 242 | + $(QUIET)mkdir -p $@ |
| 243 | + |
| 244 | +$(includedir)/.: |
| 245 | + $(QUIET)mkdir -p $@ |
| 246 | + |
| 247 | +$(includedir)%/.: |
| 248 | + $(QUIET)mkdir -p $@ |
| 249 | + |
| 250 | +TRACK_CFLAGS = $(subst ','\'',$(CXX) $(CFLAGS) $(CXXFLAGS)) |
| 251 | + |
| 252 | +$(OBJ_DIR)/.cflags: .force-cflags | $$(@D)/. |
| 253 | + @FLAGS='$(TRACK_CFLAGS)'; \ |
| 254 | + if test x"$$FLAGS" != x"`cat $(OBJ_DIR)/.cflags 2>/dev/null`" ; then \ |
| 255 | + echo " * rebuilding abseil: new build flags or prefix"; \ |
| 256 | + echo "$$FLAGS" > $(OBJ_DIR)/.cflags; \ |
| 257 | + fi |
| 258 | + |
| 259 | +.PHONY: .force-cflags |
0 commit comments