-
Notifications
You must be signed in to change notification settings - Fork 0
/
rules.mk
139 lines (116 loc) · 3.7 KB
/
rules.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# common rules
# for convenience at the ends of lists
EOL =
# All the Vala files, and the corresponding C files. One variable per
# directory under src/ . Each variable refers to files in the
# corresponding subdirectory. The subdirectories are added by the variables
# that use these.
# src/
MY_pgm_VALA = main.vala
# src/app
MY_app_VALA = pfft.vala myconfig.vapi
# myconfig.vapi is under source control, so make sure to update it manually
# if you add symbols to config.h.
MY_app_EXTRASOURCES = pfft-shim.c
# src/core
MY_core_VALA = el.vala reader.vala registry.vala template.vala units.vala util.vala writer.vala
MY_core_EXTRASOURCES = registry-impl.cpp
# src/logging
MY_logging_VALA = logging.vala strings.vala
MY_logging_EXTRASOURCES = logging-c.h logging-c.c
# src/reader
MY_reader_VALA = md4c-reader.vala \
md4c.vapi \
$(EOL)
MY_reader_EXTRASOURCES = register.c \
$(top_srcdir)/src/md4c/src/md4c.c \
$(top_srcdir)/src/md4c/src/md4c.h \
md4c-shim.c md4c-shim.h \
reader-shim.c reader-shim.h \
$(EOL)
# src/writer
MY_writer_VALA = pango-markup.vala pango-blocks.vala \
dumper.vala
MY_writer_EXTRASOURCES = register.c
# subdirs. Listed in the order they should appear on link lines.
MY_subdirs = app reader writer core logging
MY_all_VALA = \
$(MY_pgm_VALA) \
$(foreach dir, $(MY_subdirs), \
$(foreach fn, $(MY_$(dir)_VALA), $(dir)/$(fn)) \
) \
$(EOL)
MY_VALA_C = $(foreach fn, $(MY_all_VALA), $(fn:.vala=.c))
MY_VALA_H = $(foreach fn, $(MY_all_VALA), $(fn:.vala=.h))
# Tests. Listed here so they can be pretty-printed.
MY_vala_TESTS = \
001-sanity-t \
010-core-util-t \
020-registry-t \
021-registry-classmap-t \
050-core-el-t \
055-core-units-t \
060-core-template-t \
070-core-writer-t \
071-core-writer-emit-t \
100-logging-t \
200-md4c-reader-t \
300-pango-markup-writer-t \
305-pango-markup-utils-t \
$(EOL)
MY_script_TESTS = \
071-core-writer-emit.sh \
$(EOL)
# Vala dependencies
MY_VALA_PKGS = \
--pkg pangocairo --pkg pango --pkg cairo \
--pkg gee-0.8 \
--pkg gstreamer-1.0 \
--pkg gobject-2.0 \
--pkg gio-2.0 \
$(EOL)
# Vala settings.
# - LOCAL_VALA_FLAGS is filled in by each Makefile.am with any other valac
# options that Makefile.am needs.
# - Always use the C++ compiler for the generated code, since the
# registry relies on it.
# - TODO remove USER_VALAFLAGS once I figure out why regular VALAFLAGS
# isn't being passed through.
AM_VALAFLAGS = \
$(LOCAL_VALA_FLAGS) \
--cc=$(CXX) \
$(MY_VALA_PKGS) \
$(USER_VALAFLAGS) \
$(EOL)
# not this => -H $(<:.vala=.h)
# because all the .vala files are run through a single invocation of valac.
# C settings, which are the same throughout. LOCAL_CFLAGS is filled in
# by each Makefile.am.
AM_CFLAGS = $(LOCAL_CFLAGS) $(INPUT_CFLAGS) $(RENDER_CFLAGS) $(BASE_CFLAGS) $(CODE_COVERAGE_CFLAGS)
AM_CXXFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CXXFLAGS)
AM_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
LIBS = $(INPUT_LIBS) $(RENDER_LIBS) $(BASE_LIBS) $(CODE_COVERAGE_LIBS)
# Flags used by both the program and the tests --- anything that links
# against all the libraries
MY_use_all_valaflags = \
$(foreach dir, $(MY_subdirs), \
--vapidir $(top_srcdir)/src/$(dir) --pkg pfft-$(dir) \
) \
$(EOL)
MY_use_all_cflags = \
$(foreach dir, $(MY_subdirs), \
-I$(top_srcdir)/src/$(dir) \
) \
$(EOL)
MY_use_all_ldadd = \
$(foreach dir, $(MY_subdirs), \
$(top_builddir)/src/$(dir)/libpfft-$(dir).a \
) \
$(EOL)
# For code coverage, per
# https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html
clean-local: code-coverage-clean
distclean-local: code-coverage-dist-clean
CODE_COVERAGE_OUTPUT_FILE = $(PACKAGE_TARNAME)-coverage.info
CODE_COVERAGE_OUTPUT_DIRECTORY = $(PACKAGE_TARNAME)-coverage
include $(top_srcdir)/aminclude_static.am