blob: 5f36bbeceec07347b171974b39ffae473e95fdd3 [file] [log] [blame]
Amin Hassanic3e6b532017-03-07 17:47:25 -08001# Copyright 2017 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5PUFFIN_SOURCES = \
6 bit_reader.cc \
7 bit_writer.cc \
8 huffer.cc \
9 huffman_table.cc \
10 puffer.cc \
11 puff_reader.cc \
12 puff_writer.cc \
13 puffin_stream.cc \
14 stream.cc \
15 utils.cc
16
17UNITTEST_SOURCES = \
18 bit_io_unittest.cc \
19 puff_io_unittest.cc \
20 stream_unittest.cc \
21 testrunner.cc \
22 utils_unittest.cc
23
24OBJDIR = obj
25SRCDIR = src
26PUFFIN_OBJECTS = $(addprefix $(OBJDIR)/, $(PUFFIN_SOURCES:.cc=.o))
27UNITTEST_OBJECTS = $(addprefix $(OBJDIR)/, $(UNITTEST_SOURCES:.cc=.o))
28
29LIBPUFFIN = libpuffin.so
30UNITTESTS = puffin_unittests
31
32CXXFLAGS ?= -O3 -ggdb
33CXXFLAGS += -Wall -fPIC -std=c++11
34CPPFLAGS += -I../ -Isrc/include
35LDLIBS = -lgflags -lglog -lprotobuf-lite -lgtest -lpthread
36
37VPATH = $(SRCDIR)
38
39all: $(LIBPUFFIN)
40
41$(OBJDIR):
42 mkdir -p $@
43
44$(PUFFIN_OBJECTS): | $(OBJDIR)
45
46$(LIBPUFFIN): $(PUFFIN_OBJECTS)
47 $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $^ -o $@ $(LDLIBS)
48
49$(UNITTESTS): $(UNITTEST_OBJECTS)
50 $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBPUFFIN) $(LDLIBS)
51
52test: $(LIBPUFFIN) $(UNITTESTS)
53
54clean:
55 rm -rf $(OBJDIR) $(LIBPUFFIN) $(UNITTESTS)
56
57$(OBJDIR)/%.o: %.cc
58 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
59
60.PHONY: all clean test