blob: e57b022197f2a3869f72325f4e7a08f8bbd06f6c [file] [log] [blame]
Harald Welte4cd3d8a2010-03-23 00:30:19 +08001ACLOCAL_AMFLAGS = -I m4
Harald Welte3cae0392010-02-20 21:09:24 +01002
Pau Espin Pedrola50ed5f2023-01-18 18:50:57 +01003AM_CPPFLAGS = -I$(top_srcdir)/include
Neels Hofmeyr044f0cd2022-06-12 19:04:05 +02004SUBDIRS = \
5 include \
6 src \
Neels Hofmeyr044f0cd2022-06-12 19:04:05 +02007 utils \
8 tapset \
9 tests \
10 $(NULL)
Harald Welte3cae0392010-02-20 21:09:24 +010011
12pkgconfigdir = $(libdir)/pkgconfig
Harald Welte641f7ce2012-06-17 23:05:26 +080013pkgconfig_DATA = libosmocore.pc libosmocodec.pc libosmovty.pc libosmogsm.pc \
Harald Welteda432cd2019-12-15 19:13:26 +010014 libosmogb.pc libosmoctrl.pc libosmocoding.pc libosmosim.pc \
Harald Welted55a2092022-11-29 22:33:54 +010015 libosmousb.pc libosmoisdn.pc
Harald Welte4cd3d8a2010-03-23 00:30:19 +080016
Vasil Velichkov499510b2019-04-03 02:32:37 +030017aclocaldir = $(datadir)/aclocal
18dist_aclocal_DATA = m4/osmo_ac_code_coverage.m4 \
19 m4/osmo_ax_code_coverage.m4
20
Maxff932bb2017-07-04 18:19:38 +020021@RELMAKE@
Vasil Velichkov499510b2019-04-03 02:32:37 +030022@CODE_COVERAGE_RULES@
Maxff932bb2017-07-04 18:19:38 +020023
24relengdir = $(includedir)
25releng_DATA = osmo-release.mk
26
Harald Welteee497f22017-10-03 16:54:41 +080027dist_bin_SCRIPTS = osmo-release.sh
28
Maxff932bb2017-07-04 18:19:38 +020029osmo-release.mk: git-version-gen
30
Harald Welte4cd3d8a2010-03-23 00:30:19 +080031BUILT_SOURCES = $(top_srcdir)/.version
32$(top_srcdir)/.version:
33 echo $(VERSION) > $@-t && mv $@-t $@
34dist-hook:
35 echo $(VERSION) > $(distdir)/.tarball-version
Holger Hans Peter Freytherec4f1602011-07-17 12:13:31 +020036
Oliver Smitha2991392020-05-22 13:13:17 +020037EXTRA_DIST = \
38 .version \
39 README.md \
40 contrib/libosmocore.spec.in \
41 debian \
42 git-version-gen \
43 osmo-release.mk \
44 osmo-release.sh \
45 $(NULL)
Harald Welte21e73c22011-08-17 19:33:06 +020046
Neels Hofmeyr44c15b72019-02-01 05:56:09 +010047HTML = \
48 $(top_builddir)/doc/core/html/index.html \
49 $(top_builddir)/doc/gsm/html/index.html \
Harald Welted55a2092022-11-29 22:33:54 +010050 $(top_builddir)/doc/isdn/html/index.html \
Neels Hofmeyr44c15b72019-02-01 05:56:09 +010051 $(top_builddir)/doc/vty/html/index.html \
52 $(top_builddir)/doc/codec/html/index.html \
53 $(top_builddir)/doc/coding/html/index.html \
54 $(top_builddir)/doc/ctrl/html/index.html \
55 $(top_builddir)/doc/gb/html/index.html
Harald Welte21e73c22011-08-17 19:33:06 +020056
Neels Hofmeyr44c15b72019-02-01 05:56:09 +010057if HAVE_DOXYGEN
Diego Elio Pettenò200710e2012-06-29 13:01:26 -070058html_DATA = $(top_builddir)/doc/html.tar
Harald Welte21e73c22011-08-17 19:33:06 +020059
Neels Hofmeyr249fb712017-06-20 02:52:38 +020060doc: $(html_DATA)
61
Neels Hofmeyr44c15b72019-02-01 05:56:09 +010062$(html_DATA): apidoc
63else
64DOXYGEN=doxygen
65endif
66
67.PHONY: apidoc
68apidoc: $(HTML)
Harald Welte7992af02011-08-17 19:37:26 +020069 cd $(top_builddir)/doc && tar cf html.tar */html
Harald Welte21e73c22011-08-17 19:33:06 +020070
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +010071# Support doxygen cross references from each library to each other library:
72# First generate the docs to make sure all .tag files are in place.
73# In a second run, generate the content with proper referencing.
74# For example, libosmocore references tags from libosmovty and vice versa,
75# so both need to generate tag files first, and then do another run.
76#
77# Generate each docs tree, and touch a libosmofoo.tag.prep file when done.
78# It means that a libosmofoo.tag file is up-to-date.
79# Touch a separate "*.prep" target: libosmofoo.tag as target would create
80# circular dependency: we would rebuild all every time 'make' is invoked.
81# The .prep file also depends on all the source files for that library.
82
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +010083$(top_builddir)/doc/libosmocore.tag.prep: $(top_builddir)/Doxyfile.core \
84 $(top_srcdir)/include/osmocom/core/*.h \
Pau Espin Pedrold4c3dc82023-01-18 17:04:04 +010085 $(top_srcdir)/src/core/*.[hc] \
86 $(top_srcdir)/src/core/crcXXgen.c.tpl \
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +010087 $(top_srcdir)/src/pseudotalloc/*.[hc]
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +010088 rm -rf $(top_builddir)/doc/core; mkdir -p $(top_builddir)/doc/core
89 rm -rf $(top_builddir)/doc/libosmocore.map
90 -$(DOXYGEN) $(top_builddir)/Doxyfile.core
91 touch "$@"
92
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +010093$(top_builddir)/doc/libosmogsm.tag.prep: $(top_builddir)/Doxyfile.gsm \
94 $(top_srcdir)/include/osmocom/gsm/*.h \
95 $(top_srcdir)/include/osmocom/gsm/protocol/*.h \
96 $(top_srcdir)/include/osmocom/crypt/*.h \
97 $(top_srcdir)/src/gsm/*.c \
98 $(top_srcdir)/src/gsm/milenage/*.[hc]
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +010099 rm -rf $(top_builddir)/doc/gsm; mkdir -p $(top_builddir)/doc/gsm
100 rm -rf $(top_builddir)/doc/libosmogsm.map
101 -$(DOXYGEN) $(top_builddir)/Doxyfile.gsm
102 touch "$@"
103
Harald Welted55a2092022-11-29 22:33:54 +0100104$(top_builddir)/doc/libosmoisdn.tag.prep: $(top_builddir)/Doxyfile.isdn \
105 $(top_srcdir)/include/osmocom/isdn/*.h \
106 $(top_srcdir)/src/isdn/*.c
107 rm -rf $(top_builddir)/doc/isdn; mkdir -p $(top_builddir)/doc/isdn
108 rm -rf $(top_builddir)/doc/libosmoisdn.map
109 -$(DOXYGEN) $(top_builddir)/Doxyfile.isdn
110 touch "$@"
111
Oliver Smith316d1e12019-06-28 09:13:22 +0200112# Don't delete the entire doc/vty, it contains example.xml and vtydoc.xsd (OS#3986)
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +0100113$(top_builddir)/doc/libosmovty.tag.prep: $(top_builddir)/Doxyfile.vty \
114 $(top_srcdir)/include/osmocom/vty/*.h \
115 $(top_srcdir)/src/vty/*.c
Oliver Smith316d1e12019-06-28 09:13:22 +0200116 rm -rf $(top_builddir)/doc/vty/html $(top_builddir)/doc/vty/latex
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100117 rm -rf $(top_builddir)/doc/libosmovty.map
118 -$(DOXYGEN) $(top_builddir)/Doxyfile.vty
119 touch "$@"
120
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +0100121$(top_builddir)/doc/libosmocodec.tag.prep: $(top_builddir)/Doxyfile.codec \
122 $(top_srcdir)/include/osmocom/codec/*.h \
123 $(top_srcdir)/src/codec/*.c
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100124 rm -rf $(top_builddir)/doc/codec; mkdir -p $(top_builddir)/doc/codec
125 rm -rf $(top_builddir)/doc/libosmocodec.map
126 -$(DOXYGEN) $(top_builddir)/Doxyfile.codec
127 touch "$@"
128
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +0100129$(top_builddir)/doc/libosmocoding.tag.prep: $(top_builddir)/Doxyfile.coding \
130 $(top_srcdir)/include/osmocom/coding/*.h \
131 $(top_srcdir)/src/coding/*.c
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100132 rm -rf $(top_builddir)/doc/coding; mkdir -p $(top_builddir)/doc/coding
133 rm -rf $(top_builddir)/doc/libosmocoding.map
134 -$(DOXYGEN) $(top_builddir)/Doxyfile.coding
135 touch "$@"
136
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +0100137$(top_builddir)/doc/libosmoctrl.tag.prep: $(top_builddir)/Doxyfile.ctrl \
138 $(top_srcdir)/include/osmocom/ctrl/*.h \
139 $(top_srcdir)/src/ctrl/*.c
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100140 rm -rf $(top_builddir)/doc/ctrl; mkdir -p $(top_builddir)/doc/ctrl
141 rm -rf $(top_builddir)/doc/libosmoctrl.map
142 -$(DOXYGEN) $(top_builddir)/Doxyfile.ctrl
143 touch "$@"
144
Neels Hofmeyr375bf6d2019-02-01 05:25:36 +0100145$(top_builddir)/doc/libosmogb.tag.prep: $(top_builddir)/Doxyfile.gb \
146 $(top_srcdir)/include/osmocom/gprs/*.h \
147 $(top_srcdir)/src/gb/*.[hc]
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100148 rm -rf $(top_builddir)/doc/gb; mkdir -p $(top_builddir)/doc/gb
149 rm -rf $(top_builddir)/doc/libosmogb.map
150 -$(DOXYGEN) $(top_builddir)/Doxyfile.gb
151 touch "$@"
152
153# Build for real once all depending .tag files are in place.
154# Depend on the own .tag.prep file to avoid concurrent builds of the same doc
155# tree, and to also depend on all the source files listed above.
156#
157# Each library should depend on all the tag.prep files of which it lists .tag
158# files in Doxyfile under TAGFILES.
159#
160# In turn, include all .tag files in TAGFILES of libraries to which "\ref"
161# references point.
162#
163# Easiest is to just depend on all tag.prep files all across everywhere.
164
165$(top_builddir)/doc/core/html/index.html: $(top_builddir)/doc/libosmocore.tag.prep \
166 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100167 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100168 $(top_builddir)/doc/libosmovty.tag.prep \
169 $(top_builddir)/doc/libosmocodec.tag.prep \
170 $(top_builddir)/doc/libosmocoding.tag.prep \
171 $(top_builddir)/doc/libosmoctrl.tag.prep \
172 $(top_builddir)/doc/libosmogb.tag.prep
173 rm -rf $(top_builddir)/doc/core; mkdir -p $(top_builddir)/doc/core
Harald Weltec7859ed2011-08-20 12:54:17 +0200174 $(DOXYGEN) Doxyfile.core
Harald Welte21e73c22011-08-17 19:33:06 +0200175
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100176$(top_builddir)/doc/gsm/html/index.html: $(top_builddir)/doc/libosmogsm.tag.prep \
177 $(top_builddir)/doc/libosmocore.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100178 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100179 $(top_builddir)/doc/libosmovty.tag.prep \
180 $(top_builddir)/doc/libosmocodec.tag.prep \
181 $(top_builddir)/doc/libosmocoding.tag.prep \
182 $(top_builddir)/doc/libosmoctrl.tag.prep \
183 $(top_builddir)/doc/libosmogb.tag.prep
184 rm -rf $(top_builddir)/doc/gsm; mkdir -p $(top_builddir)/doc/gsm
Harald Welte21e73c22011-08-17 19:33:06 +0200185 $(DOXYGEN) Doxyfile.gsm
186
Harald Welted55a2092022-11-29 22:33:54 +0100187$(top_builddir)/doc/isdn/html/index.html: $(top_builddir)/doc/libosmoisdn.tag.prep \
188 $(top_builddir)/doc/libosmocore.tag.prep \
189 $(top_builddir)/doc/libosmogsm.tag.prep \
190 $(top_builddir)/doc/libosmovty.tag.prep \
191 $(top_builddir)/doc/libosmocodec.tag.prep \
192 $(top_builddir)/doc/libosmocoding.tag.prep \
193 $(top_builddir)/doc/libosmoctrl.tag.prep \
194 $(top_builddir)/doc/libosmogb.tag.prep
195 rm -rf $(top_builddir)/doc/isdn; mkdir -p $(top_builddir)/doc/isdn
196 $(DOXYGEN) Doxyfile.isdn
197
Oliver Smith316d1e12019-06-28 09:13:22 +0200198# Don't delete the entire doc/vty, it contains example.xml and vtydoc.xsd (OS#3986)
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100199$(top_builddir)/doc/vty/html/index.html: $(top_builddir)/doc/libosmovty.tag.prep \
200 $(top_builddir)/doc/libosmocore.tag.prep \
201 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100202 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100203 $(top_builddir)/doc/libosmocodec.tag.prep \
204 $(top_builddir)/doc/libosmocoding.tag.prep \
205 $(top_builddir)/doc/libosmoctrl.tag.prep \
206 $(top_builddir)/doc/libosmogb.tag.prep
Oliver Smith316d1e12019-06-28 09:13:22 +0200207 rm -rf $(top_builddir)/doc/vty/html $(top_builddir)/doc/vty/latex
Harald Welte21e73c22011-08-17 19:33:06 +0200208 $(DOXYGEN) Doxyfile.vty
209
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100210$(top_builddir)/doc/codec/html/index.html: $(top_builddir)/doc/libosmocodec.tag.prep \
211 $(top_builddir)/doc/libosmocore.tag.prep \
212 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100213 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100214 $(top_builddir)/doc/libosmovty.tag.prep \
215 $(top_builddir)/doc/libosmocoding.tag.prep \
216 $(top_builddir)/doc/libosmoctrl.tag.prep \
217 $(top_builddir)/doc/libosmogb.tag.prep
218 rm -rf $(top_builddir)/doc/codec; mkdir -p $(top_builddir)/doc/codec
Harald Welte21e73c22011-08-17 19:33:06 +0200219 $(DOXYGEN) Doxyfile.codec
220
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100221$(top_builddir)/doc/coding/html/index.html: $(top_builddir)/doc/libosmocoding.tag.prep \
222 $(top_builddir)/doc/libosmocore.tag.prep \
223 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100224 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100225 $(top_builddir)/doc/libosmovty.tag.prep \
226 $(top_builddir)/doc/libosmocodec.tag.prep \
227 $(top_builddir)/doc/libosmoctrl.tag.prep \
228 $(top_builddir)/doc/libosmogb.tag.prep
229 rm -rf $(top_builddir)/doc/coding; mkdir -p $(top_builddir)/doc/coding
Vadim Yanitskiy3262f822016-09-23 01:48:59 +0700230 $(DOXYGEN) Doxyfile.coding
231
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100232$(top_builddir)/doc/ctrl/html/index.html: $(top_builddir)/doc/libosmoctrl.tag.prep \
233 $(top_builddir)/doc/libosmocore.tag.prep \
234 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100235 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100236 $(top_builddir)/doc/libosmovty.tag.prep \
237 $(top_builddir)/doc/libosmocodec.tag.prep \
238 $(top_builddir)/doc/libosmocoding.tag.prep \
239 $(top_builddir)/doc/libosmogb.tag.prep
240 rm -rf $(top_builddir)/doc/ctrl; mkdir -p $(top_builddir)/doc/ctrl
Harald Welteb4186822018-05-26 17:25:11 +0200241 $(DOXYGEN) Doxyfile.ctrl
242
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100243$(top_builddir)/doc/gb/html/index.html: $(top_builddir)/doc/libosmogb.tag.prep \
244 $(top_builddir)/doc/libosmocore.tag.prep \
245 $(top_builddir)/doc/libosmogsm.tag.prep \
Harald Welted55a2092022-11-29 22:33:54 +0100246 $(top_builddir)/doc/libosmoisdn.tag.prep \
Neels Hofmeyr2fe50ac2019-02-01 05:25:36 +0100247 $(top_builddir)/doc/libosmovty.tag.prep \
248 $(top_builddir)/doc/libosmocodec.tag.prep \
249 $(top_builddir)/doc/libosmocoding.tag.prep \
250 $(top_builddir)/doc/libosmoctrl.tag.prep
251 rm -rf $(top_builddir)/doc/gb; mkdir -p $(top_builddir)/doc/gb
Neels Hofmeyr249fb712017-06-20 02:52:38 +0200252 $(DOXYGEN) Doxyfile.gb
253
Neels Hofmeyr44c15b72019-02-01 05:56:09 +0100254if HAVE_DOXYGEN
Harald Welte21e73c22011-08-17 19:33:06 +0200255install-data-hook:
Diego Elio Pettenò200710e2012-06-29 13:01:26 -0700256 cd $(DESTDIR)$(htmldir) && tar xf html.tar && rm -f html.tar
Harald Welte21e73c22011-08-17 19:33:06 +0200257
258uninstall-hook:
Harald Welted55a2092022-11-29 22:33:54 +0100259 cd $(DESTDIR)$(htmldir) && rm -rf {core,gsm,isdn,vty,codec,coding,ctrl,gb}
Harald Welte21e73c22011-08-17 19:33:06 +0200260
Harald Welted55a2092022-11-29 22:33:54 +0100261DX_CLEAN = doc/{core,gsm,isdn,vty,codec,coding,ctrl,gb}/html/search/* doc/{core,gsm,isdn,vty,codec,coding,ctrl,gb}/{html,latex}/* doc/html.tar doc/{core,gsm,isdn,vty,codec,coding,ctrl,gb}/doxygen_sqlite3.db doc/*.tag doc/*.tag.prep
Harald Welte21e73c22011-08-17 19:33:06 +0200262endif
Harald Welte47945f02011-08-20 13:00:37 +0200263
264MOSTLYCLEANFILES = $(DX_CLEAN)