]> git.ipfire.org Git - location/libloc.git/blob - Makefile.am
importer: Try to make parsing blocks faster
[location/libloc.git] / Makefile.am
1 EXTRA_DIST =
2 CLEANFILES =
3 INSTALL_DIRS =
4 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
5 AM_MAKEFLAGS = --no-print-directory
6
7 SUBDIRS = . po
8 BINDINGS =
9
10 OS = $(shell uname -s)
11
12 if ENABLE_PERL
13 BINDINGS += perl
14 endif
15
16 AM_CPPFLAGS = \
17 -include $(top_builddir)/config.h \
18 -DSYSCONFDIR=\""$(sysconfdir)"\" \
19 -I${top_srcdir}/src
20
21 AM_CFLAGS = ${my_CFLAGS} \
22 -ffunction-sections \
23 -fdata-sections
24
25 AM_LDFLAGS = ${my_LDFLAGS}
26
27 # leaving a space here to work around automake's conditionals
28 ifeq ($(OS),Darwin)
29 AM_LDFLAGS += -Wl,-dead_strip
30 else
31 AM_LDFLAGS += \
32 -Wl,--as-needed \
33 -Wl,--gc-sections
34 endif
35
36 LIBLOC_CURRENT=1
37 LIBLOC_REVISION=2
38 LIBLOC_AGE=0
39
40 DISTCHECK_CONFIGURE_FLAGS = \
41 --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
42
43 SED_PROCESS = \
44 $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(SED) \
45 -e 's,@VERSION\@,$(VERSION),g' \
46 -e 's,@prefix\@,$(prefix),g' \
47 -e 's,@exec_prefix\@,$(exec_prefix),g' \
48 -e 's,@bindir\@,$(bindir),g' \
49 -e 's,@libdir\@,$(libdir),g' \
50 -e 's,@includedir\@,$(includedir),g' \
51 -e 's,@databasedir\@,$(databasedir),g' \
52 < $< > $@ || rm $@
53
54 databasedir = $(localstatedir)/lib/location
55 pkgconfigdir = $(libdir)/pkgconfig
56
57 # Overwrite Python path
58 pkgpythondir = $(pythondir)/location
59
60 %: %.in Makefile
61 $(SED_PROCESS)
62
63 @INTLTOOL_POLICY_RULE@
64
65 # ------------------------------------------------------------------------------
66
67 AM_V_ASCIIDOC = $(AM_V_ASCIIDOC_$(V))
68 AM_V_ASCIIDOC_ = $(AM_V_ASCIIDOC_$(AM_DEFAULT_VERBOSITY))
69 AM_V_ASCIIDOC_0 = @echo " ASCIIDOC" $@;
70
71 AM_V_XSLT = $(AM_V_XSLT_$(V))
72 AM_V_XSLT_ = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY))
73 AM_V_XSLT_0 = @echo " XSLT " $@;
74
75 # ------------------------------------------------------------------------------
76
77 .PHONY: update-po
78 update-po: po/POTFILES.in
79 $(MAKE) -C po update-po
80
81 po/POTFILES.in: Makefile
82 find $(abs_srcdir)/src -type f \( -name '*.in' -o -name '*.py' \) \
83 \! -exec git check-ignore -q {} \; -print | \
84 sed -e "s@$(abs_srcdir)/@@g" | LC_ALL=C sort > $@
85
86 EXTRA_DIST += \
87 examples/private-key.pem \
88 examples/public-key.pem \
89 examples/python/create-database.py \
90 examples/python/read-database.py
91
92 pkginclude_HEADERS = \
93 src/libloc/libloc.h \
94 src/libloc/address.h \
95 src/libloc/as.h \
96 src/libloc/as-list.h \
97 src/libloc/compat.h \
98 src/libloc/country.h \
99 src/libloc/country-list.h \
100 src/libloc/database.h \
101 src/libloc/format.h \
102 src/libloc/network.h \
103 src/libloc/network-list.h \
104 src/libloc/private.h \
105 src/libloc/stringpool.h \
106 src/libloc/resolv.h \
107 src/libloc/writer.h
108
109 lib_LTLIBRARIES = \
110 src/libloc.la
111
112 src_libloc_la_SOURCES = \
113 src/libloc.c \
114 src/address.c \
115 src/as.c \
116 src/as-list.c \
117 src/country.c \
118 src/country-list.c \
119 src/database.c \
120 src/network.c \
121 src/network-list.c \
122 src/resolv.c \
123 src/stringpool.c \
124 src/writer.c
125
126 EXTRA_DIST += src/libloc.sym
127
128 src_libloc_la_CFLAGS = \
129 $(AM_CFLAGS) \
130 -DLIBLOC_PRIVATE \
131 -fvisibility=hidden
132
133 src_libloc_la_LDFLAGS = \
134 $(AM_LDFLAGS) \
135 -version-info $(LIBLOC_CURRENT):$(LIBLOC_REVISION):$(LIBLOC_AGE)
136
137 if HAVE_LD_VERSION_SCRIPT
138 src_libloc_la_LDFLAGS += -Wl,--version-script=$(top_srcdir)/src/libloc.sym
139 else
140 src_libloc_la_LDFLAGS += -export-symbols $(top_srcdir)/src/libloc.sym
141 endif
142
143 src_libloc_la_LIBADD = \
144 $(OPENSSL_LIBS) \
145 $(RESOLV_LIBS)
146
147 src_libloc_la_DEPENDENCIES = \
148 ${top_srcdir}/src/libloc.sym
149
150 noinst_LTLIBRARIES = \
151 src/libloc-internal.la
152
153 src_libloc_internal_la_SOURCES = \
154 $(src_libloc_la_SOURCES)
155
156 src_libloc_internal_la_CFLAGS = \
157 $(src_libloc_la_CFLAGS)
158
159 src_libloc_internal_la_LDFLAGS = \
160 $(filter-out -version-info %,$(src_libloc_la_LDFLAGS))
161
162 src_libloc_internal_la_LIBADD = \
163 $(src_libloc_la_LIBADD)
164
165 src_libloc_internal_la_DEPENDENCIES = \
166 $(src_libloc_la_DEPENDENCIES)
167
168 pkgconfig_DATA = \
169 src/libloc.pc
170
171 EXTRA_DIST += \
172 src/libloc.pc.in
173
174 CLEANFILES += \
175 src/libloc.pc
176
177 dist_pkgpython_PYTHON = \
178 src/python/location/__init__.py \
179 src/python/location/database.py \
180 src/python/location/downloader.py \
181 src/python/location/export.py \
182 src/python/location/i18n.py \
183 src/python/location/importer.py \
184 src/python/location/logger.py
185
186 pyexec_LTLIBRARIES = \
187 src/python/_location.la
188
189 src_python__location_la_SOURCES = \
190 src/python/locationmodule.c \
191 src/python/locationmodule.h \
192 src/python/as.c \
193 src/python/as.h \
194 src/python/country.c \
195 src/python/country.h \
196 src/python/database.c \
197 src/python/database.h \
198 src/python/network.c \
199 src/python/network.h \
200 src/python/writer.c \
201 src/python/writer.h
202
203 src_python__location_la_CFLAGS = \
204 $(AM_CFLAGS) \
205 $(PYTHON_CFLAGS)
206
207 src_python__location_la_LDFLAGS = \
208 $(AM_LDFLAGS) \
209 -shared \
210 -module \
211 -avoid-version
212
213 src_python__location_la_LIBADD = \
214 src/libloc.la \
215 $(PYTHON_LIBS)
216
217 # Compile & install bindings
218 all-local: $(foreach binding,$(BINDINGS),build-$(binding))
219 check-local: $(foreach binding,$(BINDINGS),check-$(binding))
220 install-exec-local: $(foreach binding,$(BINDINGS),install-$(binding))
221 clean-local: $(foreach binding,$(BINDINGS),clean-$(binding))
222 uninstall-local: $(foreach binding,$(BINDINGS),uninstall-$(binding))
223
224 # Perl Bindings
225 EXTRA_DIST += \
226 src/perl/.gitignore \
227 src/perl/Location.xs \
228 src/perl/MANIFEST \
229 src/perl/Makefile.PL \
230 src/perl/lib/Location.pm \
231 src/perl/t/Location.t \
232 src/perl/typemap
233
234 .PHONY: build-perl
235 build-perl:
236 @mkdir -p $(builddir)/src/perl/{lib,t}
237 @test -e $(builddir)/src/perl/Location.xs || ln -s --relative $(srcdir)/src/perl/Location.xs $(builddir)/src/perl/
238 @test -e $(builddir)/src/perl/MANIFEST || ln -s --relative $(srcdir)/src/perl/MANIFEST $(builddir)/src/perl/
239 @test -e $(builddir)/src/perl/Makefile.PL || ln -s --relative $(srcdir)/src/perl/Makefile.PL $(builddir)/src/perl/
240 @test -e $(builddir)/src/perl/lib/Location.pm || ln -s --relative $(srcdir)/src/perl/lib/Location.pm $(builddir)/src/perl/lib/
241 @test -e $(builddir)/src/perl/t/Location.t || ln -s --relative $(srcdir)/src/perl/t/Location.t $(builddir)/src/perl/t/
242 @test -e $(builddir)/src/perl/typemap || ln -s --relative $(srcdir)/src/perl/typemap $(builddir)/src/perl/
243
244 cd $(builddir)/src/perl && $(PERL) Makefile.PL PREFIX="$(prefix)" \
245 INC="-I$(abs_srcdir)/src" LIBS="-L$(abs_builddir)/src/.libs -lloc"
246 cd $(builddir)/src/perl && $(MAKE) LD_RUN_PATH=
247
248 .PHONY: check-perl
249 check-perl: testdata.db
250 cd $(builddir)/src/perl && $(MAKE) LD_LIBRARY_PATH="$(abs_builddir)/src/.libs" test \
251 database="../../$<" keyfile="$(abs_srcdir)/examples/public-key.pem"
252
253 .PHONY: install-perl
254 install-perl:
255 cd $(builddir)/src/perl && $(MAKE) install DESTIDR=$(DESTDIR)
256
257 .PHONY: clean-perl
258 clean-perl:
259 cd $(builddir)/src/perl && $(MAKE) distclean
260
261 .PHONY: uninstall-perl
262 uninstall-perl:
263 rm -rvf \
264 $(DESTDIR)/$(prefix)/lib/*/perl/*/Location.pm \
265 $(DESTDIR)/$(prefix)/lib/*/perl/*/auto/Location \
266 $(DESTDIR)/$(prefix)/lib/*/perl/*/perllocal.pod \
267 $(DESTDIR)/$(prefix)/man/man3/Location.3pm
268
269 bin_SCRIPTS = \
270 src/scripts/location \
271 src/scripts/location-importer
272
273 EXTRA_DIST += \
274 src/scripts/location.in \
275 src/scripts/location-importer.in
276
277 CLEANFILES += \
278 src/scripts/location \
279 src/scripts/location-importer
280
281 # ------------------------------------------------------------------------------
282
283 if HAVE_SYSTEMD
284 systemdsystemunit_DATA = \
285 src/systemd/location-update.service \
286 src/systemd/location-update.timer
287
288 CLEANFILES += \
289 $(systemdsystemunit_DATA)
290
291 INSTALL_DIRS += \
292 $(systemdsystemunitdir)
293 endif
294
295 EXTRA_DIST += \
296 src/systemd/location-update.service.in \
297 src/systemd/location-update.timer.in
298
299 # ------------------------------------------------------------------------------
300
301 dist_database_DATA = \
302 src/signing-key.pem
303
304 # ------------------------------------------------------------------------------
305
306 TESTS_CFLAGS = \
307 $(AM_CFLAGS) \
308 -DLIBLOC_PRIVATE \
309 -DABS_SRCDIR=\"$(abs_srcdir)\"
310
311 TESTS_LDADD = \
312 src/libloc.la \
313 src/libloc-internal.la
314
315 TESTS_ENVIRONMENT = \
316 PYTHONPATH=$(abs_srcdir)/src/python:$(abs_builddir)/src/python/.libs \
317 TEST_DATA_DIR="$(abs_top_srcdir)/tests/data"
318
319 TESTS = \
320 $(check_PROGRAMS) \
321 $(dist_check_SCRIPTS)
322
323 EXTRA_DIST += \
324 tests/data/location-2022-03-30.db
325
326 CLEANFILES += \
327 testdata.db
328
329 testdata.db: examples/python/create-database.py
330 PYTHONPATH=$(abs_srcdir)/src/python:$(abs_builddir)/src/python/.libs \
331 ABS_SRCDIR="$(abs_srcdir)" \
332 $(PYTHON) $< $@
333
334 dist_check_SCRIPTS = \
335 tests/python/test-export.py
336
337 check_PROGRAMS = \
338 src/test-libloc \
339 src/test-stringpool \
340 src/test-database \
341 src/test-as \
342 src/test-network \
343 src/test-network-list \
344 src/test-country \
345 src/test-signature \
346 src/test-address
347
348 src_test_libloc_SOURCES = \
349 src/test-libloc.c
350
351 src_test_libloc_CFLAGS = \
352 $(TESTS_CFLAGS)
353
354 src_test_libloc_LDADD = \
355 $(TESTS_LDADD)
356
357 src_test_as_SOURCES = \
358 src/test-as.c
359
360 src_test_as_CFLAGS = \
361 $(TESTS_CFLAGS)
362
363 src_test_as_LDADD = \
364 $(TESTS_LDADD)
365
366 src_test_country_SOURCES = \
367 src/test-country.c
368
369 src_test_country_CFLAGS = \
370 $(TESTS_CFLAGS)
371
372 src_test_country_LDADD = \
373 $(TESTS_LDADD)
374
375 src_test_network_SOURCES = \
376 src/test-network.c
377
378 src_test_network_CFLAGS = \
379 $(TESTS_CFLAGS)
380
381 src_test_network_LDADD = \
382 $(TESTS_LDADD)
383
384 src_test_network_list_SOURCES = \
385 src/test-network-list.c
386
387 src_test_network_list_CFLAGS = \
388 $(TESTS_CFLAGS)
389
390 src_test_network_list_LDADD = \
391 $(TESTS_LDADD)
392
393 src_test_stringpool_SOURCES = \
394 src/test-stringpool.c
395
396 src_test_stringpool_CFLAGS = \
397 $(TESTS_CFLAGS)
398
399 src_test_stringpool_LDADD = \
400 $(TESTS_LDADD)
401
402 src_test_database_SOURCES = \
403 src/test-database.c
404
405 src_test_database_CFLAGS = \
406 $(TESTS_CFLAGS)
407
408 src_test_database_LDADD = \
409 $(TESTS_LDADD)
410
411 src_test_signature_SOURCES = \
412 src/test-signature.c
413
414 src_test_signature_CFLAGS = \
415 $(TESTS_CFLAGS)
416
417 src_test_signature_LDADD = \
418 $(TESTS_LDADD)
419
420 src_test_address_SOURCES = \
421 src/test-address.c
422
423 src_test_address_CFLAGS = \
424 $(TESTS_CFLAGS)
425
426 src_test_address_LDADD = \
427 $(TESTS_LDADD)
428
429 # ------------------------------------------------------------------------------
430
431 MANPAGES = \
432 $(MANPAGES_3) \
433 $(MANPAGES_8)
434
435 MANPAGES_3 = \
436 man/libloc.3 \
437 man/loc_database_count_as.3 \
438 man/loc_database_get_as.3 \
439 man/loc_database_get_country.3 \
440 man/loc_database_lookup.3 \
441 man/loc_database_new.3 \
442 man/loc_get_log_priority.3 \
443 man/loc_new.3 \
444 man/loc_set_log_fn.3 \
445 man/loc_set_log_priority.3
446
447 MANPAGES_8 = \
448 man/location.8
449
450 MANPAGES_TXT = $(MANPAGES_TXT_3) $(MANPAGES_TXT_8)
451 MANPAGES_TXT_3 = $(patsubst %.3,%.txt,$(MANPAGES_3))
452 MANPAGES_TXT_8 = $(patsubst %.8,%.txt,$(MANPAGES_8))
453 MANPAGES_HTML = $(patsubst %.txt,%.html,$(MANPAGES_TXT))
454 MANPAGES_XML = $(patsubst %.txt,%.xml,$(MANPAGES_TXT))
455
456 .PHONY: man
457 man: $(MANPAGES) $(MANPAGES_HTML)
458
459 if ENABLE_MAN_PAGES
460 man_MANS = \
461 $(MANPAGES)
462 endif
463
464 CLEANFILES += \
465 $(MANPAGES) \
466 $(MANPAGES_HTML) \
467 $(MANPAGES_XML)
468
469 EXTRA_DIST += \
470 man/asciidoc.conf \
471 $(MANPAGES_TXT)
472
473 XSLTPROC_FLAGS = \
474 --nonet \
475 --stringparam man.output.quietly 1 \
476 --stringparam funcsynopsis.style ansi \
477 --stringparam man.th.extra1.suppress 1 \
478 --stringparam man.authors.section.enabled 1 \
479 --stringparam man.copyright.section.enabled 1
480
481 XSLTPROC_COMMAND_MAN = \
482 $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \
483 $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) \
484 http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
485
486 # Let XSLT find its source on Mac OS X
487 ifeq ($(OS),Darwin)
488 export XML_CATALOG_FILES = /usr/local/etc/xml/catalog
489 endif
490
491 man/%.xml: man/%.txt man/asciidoc.conf
492 $(AM_V_ASCIIDOC)$(MKDIR_P) $(dir $@) && \
493 $(ASCIIDOC) \
494 -f $(abs_srcdir)/man/asciidoc.conf \
495 -d manpage -b docbook -o $@ $<
496
497 man/%.3: man/%.xml
498 $(XSLTPROC_COMMAND_MAN)
499
500 man/%.8: man/%.xml
501 $(XSLTPROC_COMMAND_MAN)
502
503 man/%.html: man/%.txt man/asciidoc.conf
504 $(AM_V_ASCIIDOC)$(MKDIR_P) $(dir $@) && \
505 $(ASCIIDOC) \
506 -f $(abs_srcdir)/man/asciidoc.conf \
507 -b html5 -a icons -a theme=flask -o $@ $<
508
509 .PHONY: upload-man
510 upload-man: $(MANPAGES_HTML)
511 rsync -avHz --delete --progress $(MANPAGES_HTML) ms@fs01.haj.ipfire.org:/pub/man-pages/$(PACKAGE_NAME)/
512
513 EXTRA_DIST += \
514 debian/build.sh \
515 debian/changelog \
516 debian/compat \
517 debian/control \
518 debian/copyright \
519 debian/location.install \
520 debian/location.manpages \
521 debian/location-python.install \
522 debian/libloc1.install \
523 debian/libloc-dev.install \
524 debian/rules \
525 debian/source/format
526
527 .PHONY: debian
528 debian: dist
529 $(SHELL) debian/build.sh $(PACKAGE_NAME)-$(PACKAGE_VERSION) $(distdir).tar.xz