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