chromium/third_party/puffin/Makefile

# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

PUFFIN_SOURCES = \
	bit_reader.cc \
	bit_writer.cc \
	extent_stream.cc \
	file_stream.cc \
	huffer.cc \
	huffman_table.cc \
	memory_stream.cc \
	puffer.cc \
	puff_reader.cc \
	puff_writer.cc \
	puffin_stream.cc \
	utils.cc

UNITTEST_SOURCES = \
	bit_io_unittest.cc \
	puff_io_unittest.cc \
	puffin_unittest.cc \
	stream_unittest.cc \
	testrunner.cc \
	utils_unittest.cc

OBJDIR = obj
SRCDIR = src
PUFFIN_OBJECTS = $(addprefix $(OBJDIR)/, $(PUFFIN_SOURCES:.cc=.o))
UNITTEST_OBJECTS = $(addprefix $(OBJDIR)/, $(UNITTEST_SOURCES:.cc=.o))

LIBPUFFIN = libpuffin.so
UNITTESTS = puffin_unittests

CXXFLAGS ?= -O3 -ggdb
CXXFLAGS += -Wall -fPIC -std=c++14
CPPFLAGS += -I../ -Isrc/include
LDLIBS = -lgflags -lglog -lprotobuf-lite -lgtest -lpthread

VPATH = $(SRCDIR)

all: $(LIBPUFFIN)

$(OBJDIR):
	mkdir -p $@

$(PUFFIN_OBJECTS): | $(OBJDIR)

$(LIBPUFFIN): $(PUFFIN_OBJECTS)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $^ -o $@ $(LDLIBS)

$(UNITTESTS): $(UNITTEST_OBJECTS)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBPUFFIN) $(LDLIBS)

test: $(LIBPUFFIN) $(UNITTESTS)

clean:
	rm -rf $(OBJDIR) $(LIBPUFFIN) $(UNITTESTS)

$(OBJDIR)/%.o: %.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

.PHONY: all clean test