9b5a53b1d7
This is a first step to make WOFF2 a shared library. Public headers are moved in their own directory to make the public API clearer. This is similar to the c/include/brotli/ directory in Brotli. "using" commands are also removed from the public headers, so that callers won't have unexpected side effect when including the files.
64 lines
1.6 KiB
Makefile
64 lines
1.6 KiB
Makefile
OS := $(shell uname)
|
|
|
|
CPPFLAGS = -I./brotli/c/include/ -I./src -I./include
|
|
|
|
AR ?= ar
|
|
CC ?= gcc
|
|
CXX ?= g++
|
|
|
|
# It's helpful to be able to turn these off for fuzzing
|
|
CANONICAL_PREFIXES ?= -no-canonical-prefixes
|
|
NOISY_LOGGING ?= -DFONT_COMPRESSION_BIN
|
|
COMMON_FLAGS = -fno-omit-frame-pointer $(CANONICAL_PREFIXES) $(NOISY_LOGGING) -D __STDC_FORMAT_MACROS
|
|
|
|
ARFLAGS = cr
|
|
|
|
ifeq ($(OS), Darwin)
|
|
CPPFLAGS += -DOS_MACOSX
|
|
else
|
|
COMMON_FLAGS += -fno-tree-vrp
|
|
ARFLAGS += f
|
|
endif
|
|
|
|
|
|
CFLAGS += $(COMMON_FLAGS)
|
|
CXXFLAGS += $(COMMON_FLAGS) -std=c++11
|
|
|
|
SRCDIR = src
|
|
|
|
OUROBJ = font.o glyph.o normalize.o table_tags.o transform.o \
|
|
woff2_dec.o woff2_enc.o woff2_common.o woff2_out.o \
|
|
variable_length.o
|
|
|
|
BROTLI = brotli
|
|
BROTLIOBJ = $(BROTLI)/bin/obj/c
|
|
ENCOBJ = $(BROTLIOBJ)/enc/*.o
|
|
DECOBJ = $(BROTLIOBJ)/dec/*.o
|
|
COMMONOBJ = $(BROTLIOBJ)/common/*.o
|
|
|
|
OBJS = $(patsubst %, $(SRCDIR)/%, $(OUROBJ))
|
|
EXECUTABLES=woff2_compress woff2_decompress woff2_info
|
|
EXE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(EXECUTABLES))
|
|
ARCHIVES=convert_woff2ttf_fuzzer convert_woff2ttf_fuzzer_new_entry
|
|
ARCHIVE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(ARCHIVES))
|
|
|
|
ifeq (,$(wildcard $(BROTLI)/*))
|
|
$(error Brotli dependency not found : you must initialize the Git submodule)
|
|
endif
|
|
|
|
all : $(OBJS) $(EXECUTABLES) $(ARCHIVES)
|
|
|
|
$(ARCHIVES) : $(ARCHIVE_OBJS) $(OBJS) deps
|
|
$(AR) $(ARFLAGS) $(SRCDIR)/$@.a $(OBJS) \
|
|
$(COMMONOBJ) $(ENCOBJ) $(DECOBJ) $(SRCDIR)/$@.o
|
|
|
|
$(EXECUTABLES) : $(EXE_OBJS) deps
|
|
$(CXX) $(LFLAGS) $(OBJS) $(COMMONOBJ) $(ENCOBJ) $(DECOBJ) $(SRCDIR)/$@.o -o $@
|
|
|
|
deps :
|
|
$(MAKE) -C $(BROTLI) lib
|
|
|
|
clean :
|
|
rm -f $(OBJS) $(EXE_OBJS) $(EXECUTABLES)
|
|
$(MAKE) -C $(BROTLI) clean
|