blob: 5caee344b16bfa3e5d0381010fc8c80db7a6b130 [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 \
Amin Hassani27574e92017-10-09 16:06:47 -07008 extent_stream.cc \
Amin Hassani37da9eb2017-10-17 12:10:01 -07009 file_stream.cc \
Amin Hassanic3e6b532017-03-07 17:47:25 -080010 huffer.cc \
11 huffman_table.cc \
Amin Hassani37da9eb2017-10-17 12:10:01 -070012 memory_stream.cc \
Amin Hassanic3e6b532017-03-07 17:47:25 -080013 puffer.cc \
14 puff_reader.cc \
15 puff_writer.cc \
16 puffin_stream.cc \
Amin Hassanic3e6b532017-03-07 17:47:25 -080017 utils.cc
18
19UNITTEST_SOURCES = \
20 bit_io_unittest.cc \
21 puff_io_unittest.cc \
Amin Hassani7074da62017-09-30 17:14:06 -070022 puffin_unittest.cc \
Amin Hassanic3e6b532017-03-07 17:47:25 -080023 stream_unittest.cc \
24 testrunner.cc \
25 utils_unittest.cc
26
27OBJDIR = obj
28SRCDIR = src
29PUFFIN_OBJECTS = $(addprefix $(OBJDIR)/, $(PUFFIN_SOURCES:.cc=.o))
30UNITTEST_OBJECTS = $(addprefix $(OBJDIR)/, $(UNITTEST_SOURCES:.cc=.o))
31
32LIBPUFFIN = libpuffin.so
33UNITTESTS = puffin_unittests
34
35CXXFLAGS ?= -O3 -ggdb
Amin Hassanie8232e12019-01-04 10:49:59 -080036CXXFLAGS += -Wall -fPIC -std=c++14
Amin Hassanic3e6b532017-03-07 17:47:25 -080037CPPFLAGS += -I../ -Isrc/include
38LDLIBS = -lgflags -lglog -lprotobuf-lite -lgtest -lpthread
39
40VPATH = $(SRCDIR)
41
42all: $(LIBPUFFIN)
43
44$(OBJDIR):
45 mkdir -p $@
46
47$(PUFFIN_OBJECTS): | $(OBJDIR)
48
49$(LIBPUFFIN): $(PUFFIN_OBJECTS)
50 $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $^ -o $@ $(LDLIBS)
51
52$(UNITTESTS): $(UNITTEST_OBJECTS)
53 $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBPUFFIN) $(LDLIBS)
54
55test: $(LIBPUFFIN) $(UNITTESTS)
56
57clean:
58 rm -rf $(OBJDIR) $(LIBPUFFIN) $(UNITTESTS)
59
60$(OBJDIR)/%.o: %.cc
61 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
62
63.PHONY: all clean test