diff options
author | Timo Teräs <timo.teras@iki.fi> | 2017-10-05 10:57:45 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-10-05 16:59:14 +0300 |
commit | 86436fce2fe2364bbc9e705ddc92d7733fc8ed75 (patch) | |
tree | 9193dddcf9217194e1ac2e74ce920ecc1c349853 | |
parent | 9dc6278c7b4ef41810b264ca99b597634511bda1 (diff) | |
download | apk-tools-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.tar.gz apk-tools-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.tar.bz2 apk-tools-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.tar.xz apk-tools-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.zip |
build and use bundled libfetch natively
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Make.rules | 50 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | libfetch/Makefile | 51 | ||||
-rw-r--r-- | libfetch/common.c | 15 | ||||
-rw-r--r-- | libfetch/fetch.c | 3 | ||||
-rw-r--r-- | libfetch/file.c | 3 | ||||
-rw-r--r-- | libfetch/ftp.c | 15 | ||||
-rw-r--r-- | libfetch/http.c | 22 | ||||
-rw-r--r-- | src/Makefile | 11 |
10 files changed, 61 insertions, 115 deletions
@@ -6,6 +6,8 @@ test/repos.out test/repos.stamp test/test*.out test/test*.ok +libfetch/*err.h +*.a *.o *.d *.cmd @@ -65,6 +65,7 @@ export FULL_VERSION RCS_FIND_IGNORE CROSS_COMPILE ?= CC := $(CROSS_COMPILE)gcc +AR := $(CROSS_COMPILE)ar LD := $(CROSS_COMPILE)ld INSTALL := install INSTALLDIR := $(INSTALL) -d @@ -76,7 +77,7 @@ CFLAGS_ALL += $(CFLAGS) LDFLAGS ?= -g LDFLAGS_ALL += $(LDFLAGS) -export CC LD INSTALL INSTALLDIR CFLAGS_ALL LDFLAGS_ALL +export CC AR LD INSTALL INSTALLDIR CFLAGS_ALL LDFLAGS_ALL build := @@ -179,6 +180,10 @@ c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CPPFLAGS) \ ld_flags = $(LDFLAGS_ALL) $(LDFLAGS_EXTRA) $(LDFLAGS_$(notdir $@)) ##### +# Generated targets +generate: $(addprefix $(obj)/,$(sort $(generate-y))) + +##### # Compile c-files. quiet_cmd_cc_o_c = CC $@ @@ -193,41 +198,60 @@ endef $(obj)/%.o: override local-target-prereqs=% -$(obj)/%.o: $(src)/%.c FORCE +$(obj)/%.o: $(src)/%.c FORCE | generate $(call if_changed_rule,cc_o_c) ##### +# Link static libraries +# +__arlibs := $(addprefix $(obj)/,$(sort $(libs-y))) +arobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(libs-y),$($(m)-objs)))) + +# link shared library +quiet_cmd_ar = AR $@ + cmd_ar = $(AR) rcs $@ $(addprefix $(obj)/,$($(@F)-objs)) + +$(__arlibs): override local-target-prereqs=$(addprefix $(obj)/,$($(*F)-objs)) + +$(__arlibs): $(obj)/%: $(arobjs) FORCE + $(call if_changed,ar) + +targets += $(__arlibs) $(arobjs) + +##### # Link shared libraries # __shlibs := $(addprefix $(obj)/,$(sort $(shlibs-y))) -shobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(shlibs-y),$($(m)-objs)))) +shobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(shlibs-y),$($(m)-objs)))) $(sort $(foreach m,$(shlibs-y),$($(m)-libs))) # link shared library quiet_cmd_shlib = LD -shared $@ cmd_shlib = $(CC) $(ld_flags) -shared -o $@ \ - $(addprefix $(obj)/,$($(@F)-objs)) \ + $(addprefix $(obj)/,$($(@F)-objs)) \ + $($(@F)-libs) \ $(LIBS) $(LIBS_$(@F)) -$(__shlibs): override local-target-prereqs=$(addprefix $(obj)/,$($(*F)-objs)) +$(__shlibs): override local-target-prereqs=$(addprefix $(obj)/,$($(*F)-objs)) $($(*F)-libs) $(__shlibs): $(obj)/%: $(shobjs) FORCE $(call if_changed,shlib) targets += $(__shlibs) $(shobjs) + ##### # Link programs # Link an executable based on list of .o files, all plain c # host-cmulti -> executable __progs := $(addprefix $(obj)/,$(sort $(progs-y))) -cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(progs-y),$($(m)-objs)))) +cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(progs-y),$($(m)-objs)))) $(sort $(foreach m,$(progs-y),$($(m)-libs))) quiet_cmd_ld = LD $@ cmd_ld = $(CC) $(ld_flags) -o $@ \ - $(addprefix $(obj)/,$($(@F)-objs)) \ + $(addprefix $(obj)/,$($(@F)-objs)) $($(@F)-libs) \ $(LIBS) $(LIBS_$(@F)) -$(__progs): override local-target-prereqs=$(addprefix $(obj)/,$($(*F)-objs)) +$(__progs): override local-target-prereqs=$(addprefix $(obj)/,$($(*F)-objs)) $($(*F)-libs) $(__progs): $(obj)/%: $(cobjs) FORCE $(call if_changed,ld) @@ -263,18 +287,24 @@ endif %/: FORCE $(Q)$(MAKE) -f Make.rules build=$(build-dir) $(MAKECMDGOALS) -compile: $(targets) +compile: generate $(targets) @: install: $(targets) FORCE +generate: + clean: $(filter %/,$(targets)) ifeq ($(toplevelrun),yes) $(Q)find . $(RCS_FIND_IGNORE) \ \( -name '*.[oas]' -o -name '.*.cmd' -o -name '.*.d' \) \ -type f -print | xargs rm -f endif - $(Q)rm -rf $(addprefix $(obj)/,$(sort $(progs-y) $(progs-n) $(progs-) $(shlibs-y) $(shlibs-n) $(shlibs-))) + $(Q)rm -rf $(addprefix $(obj)/, \ + $(sort $(progs-y) $(progs-n) $(progs-) \ + $(shlibs-y) $(shlibs-n) $(shlibs-) \ + $(libs-y) $(libs-n) $(libs-) \ + $(generate-y) $(generate-n) $(generate-))) ifeq ($(origin VERSION),command line) DIST_VERSION=$(VERSION) @@ -21,7 +21,7 @@ export DESTDIR SBINDIR LIBDIR CONFDIR MANDIR DOCDIR ## # Top-level rules and targets -targets := src/ +targets := libfetch/ src/ ## # Include all rules and stuff @@ -41,3 +41,5 @@ check test: FORCE static: $(Q)$(MAKE) STATIC=y + +src/: libfetch/ diff --git a/libfetch/Makefile b/libfetch/Makefile index cfcef4b..6b183cb 100644 --- a/libfetch/Makefile +++ b/libfetch/Makefile @@ -1,45 +1,10 @@ -# $NetBSD: Makefile,v 1.8 2016/10/27 10:05:38 joerg Exp $ +CFLAGS_ALL += -DINET6 -DWITH_SSL -DFTP_COMBINE_CWDS +libs-y += libfetch.a +libfetch.a-objs := common.o fetch.o file.o ftp.o http.o +generate-y += ftperr.h httperr.h -LIB= fetch -SRCS= fetch.c common.c ftp.c http.c file.c -DPSRCS= ftperr.h httperr.h -INCS= fetch.h -MAN= fetch.3 -CLEANFILES= ftperr.h httperr.h -MKLINT= no -MKPIC= no -MKPROFILE= no +quiet_cmd_generr = GENERR $@ + cmd_generr = $(obj)/errlist.sh $(basename $(<F))_errlist $(shell echo $(basename $(<F)) | tr a-z A-Z) $< > $@ -.include <bsd.own.mk> - -CPPFLAGS+= -I. -CPPFLAGS+= -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 - -FETCH_WITH_INET6?= no -FETCH_WITH_OPENSSL?= no - -.if !empty(FETCH_WITH_INET6:M[yY][eE][sS]) -CPPFLAGS+= -DINET6 -.endif - -.if !empty(FETCH_WITH_OPENSSL:M[yY][eE][sS]) -CPPFLAGS+= -DWITH_SSL -LDADD= -lssl -lcrypto -.endif - -CPPFLAGS+= -DFTP_COMBINE_CWDS - -WARNS?= 4 - -ftp.o: ftperr.h -http.o: httperr.h - -ftperr.h: ${.CURDIR}/ftp.errors ${.CURDIR}/Makefile ${.CURDIR}/errlist.sh - sh ${.CURDIR}/errlist.sh ftp_errlist FTP \ - ${.CURDIR}/ftp.errors > ${.TARGET} - -httperr.h: ${.CURDIR}/http.errors ${.CURDIR}/Makefile ${.CURDIR}/errlist.sh - sh ${.CURDIR}/errlist.sh http_errlist HTTP \ - ${.CURDIR}/http.errors > ${.TARGET} - -.include <bsd.lib.mk> +$(obj)/%err.h: $(obj)/%.errors + @$(call echo-cmd,generr) $(cmd_generr); $(cmd_generr) diff --git a/libfetch/common.c b/libfetch/common.c index c1e1587..1fbd0d4 100644 --- a/libfetch/common.c +++ b/libfetch/common.c @@ -33,32 +33,19 @@ #if HAVE_CONFIG_H #include "config.h" #endif -#ifndef NETBSD -#include <nbcompat.h> -#endif +#include <poll.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> #include <sys/uio.h> -#if HAVE_POLL_H -#include <poll.h> -#elif HAVE_SYS_POLL_H -#include <sys/poll.h> -#endif #include <netinet/in.h> #include <arpa/inet.h> #include <ctype.h> #include <errno.h> -#if defined(HAVE_INTTYPES_H) || defined(NETBSD) #include <inttypes.h> -#endif -#ifndef NETBSD -#include <nbcompat/netdb.h> -#else #include <netdb.h> -#endif #include <pwd.h> #include <stdarg.h> #include <stdlib.h> diff --git a/libfetch/fetch.c b/libfetch/fetch.c index c287097..78cec71 100644 --- a/libfetch/fetch.c +++ b/libfetch/fetch.c @@ -33,9 +33,6 @@ #if HAVE_CONFIG_H #include "config.h" #endif -#ifndef NETBSD -#include <nbcompat.h> -#endif #include <ctype.h> #include <errno.h> diff --git a/libfetch/file.c b/libfetch/file.c index b092fdf..a18d94c 100644 --- a/libfetch/file.c +++ b/libfetch/file.c @@ -33,9 +33,6 @@ #if HAVE_CONFIG_H #include "config.h" #endif -#ifndef NETBSD -#include <nbcompat.h> -#endif #include <sys/stat.h> diff --git a/libfetch/ftp.c b/libfetch/ftp.c index 79dcbbc..af6a964 100644 --- a/libfetch/ftp.c +++ b/libfetch/ftp.c @@ -57,17 +57,9 @@ * */ -#ifdef __linux__ -/* Keep this down to Linux, it can create surprises else where. */ -#define _GNU_SOURCE -#endif - #if HAVE_CONFIG_H #include "config.h" #endif -#ifndef NETBSD -#include <nbcompat.h> -#endif #include <sys/types.h> #include <sys/socket.h> @@ -78,17 +70,10 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> -#if defined(HAVE_INTTYPES_H) || defined(NETBSD) #include <inttypes.h> -#endif #include <stdarg.h> -#ifndef NETBSD -#include <nbcompat/netdb.h> -#include <nbcompat/stdio.h> -#else #include <netdb.h> #include <stdio.h> -#endif #include <stdlib.h> #include <string.h> #include <time.h> diff --git a/libfetch/http.c b/libfetch/http.c index d0882e2..6cf5aac 100644 --- a/libfetch/http.c +++ b/libfetch/http.c @@ -63,24 +63,12 @@ * SUCH DAMAGE. */ -#if defined(__linux__) || defined(__MINT__) || defined(__FreeBSD_kernel__) -/* Keep this down to Linux or MiNT, it can create surprises elsewhere. */ -/* - __FreeBSD_kernel__ is defined for GNU/kFreeBSD. - See http://glibc-bsd.alioth.debian.org/porting/PORTING . -*/ -#define _GNU_SOURCE -#endif - /* Needed for gmtime_r on Interix */ #define _REENTRANT #if HAVE_CONFIG_H #include "config.h" #endif -#ifndef NETBSD -#include <nbcompat.h> -#endif #include <sys/types.h> #include <sys/socket.h> @@ -89,11 +77,7 @@ #include <errno.h> #include <locale.h> #include <stdarg.h> -#ifndef NETBSD -#include <nbcompat/stdio.h> -#else #include <stdio.h> -#endif #include <stdlib.h> #include <string.h> #include <time.h> @@ -101,13 +85,7 @@ #include <netinet/in.h> #include <netinet/tcp.h> - -#ifndef NETBSD -#include <nbcompat/netdb.h> -#else #include <netdb.h> -#endif - #include <arpa/inet.h> #include "fetch.h" diff --git a/src/Makefile b/src/Makefile index 5fe2bc8..c891bca 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,8 +7,6 @@ OPENSSL_LIBS := $(shell $(PKG_CONFIG) --libs openssl) ZLIB_CFLAGS := $(shell $(PKG_CONFIG) --cflags zlib) ZLIB_LIBS := $(shell $(PKG_CONFIG) --libs zlib) -FETCH_LIBS := $(shell $(CC) -print-file-name=libfetch.a) - # lua module ifneq ($(LUAAPK),) LUA_VERSION ?= 5.2 @@ -32,6 +30,7 @@ apk-objs := apk.o add.o del.o fix.o update.o info.o \ libapk.so-objs := common.o database.o package.o archive.o \ version.o io.o url.o gunzip.o blob.o hash.o print.o \ commit.o solver.o +libapk.so-libs := libfetch/libfetch.a ifeq ($(TEST),y) progs-y += apk-test @@ -42,6 +41,9 @@ ifeq ($(SHARED_LIBAPK),) apk-objs += $(libapk.so-objs) apk-test-objs += $(libapk.so-objs) apk.so-objs += $(libapk.so-objs) +apk-libs += $(libapk.so-libs) +apk-test-libs += $(libapk.so-libs) +apk.so-libs += $(libapk.so-libs) else LIBAPK := YesPlease LIBS_apk := -lapk @@ -56,13 +58,14 @@ install-LIBAPK-y := $(INSTALLDIR) $(DESTDIR)$(LIBDIR) && \ $(INSTALL) $(LIBAPK-y) $(DESTDIR)$(LIBDIR) endif -CFLAGS_ALL += -D_ATFILE_SOURCE +CFLAGS_ALL += -D_ATFILE_SOURCE -Ilibfetch CFLAGS_apk.o := -DAPK_VERSION=\"$(FULL_VERSION)\" CFLAGS_apk-static.o := -DAPK_VERSION=\"$(FULL_VERSION)\" -DOPENSSL_NO_ENGINE CFLAGS_apk-test.o := -DAPK_VERSION=\"$(FULL_VERSION)\" -DOPENSSL_NO_ENGINE -DTEST_MODE progs-$(STATIC) += apk.static apk.static-objs := $(filter-out apk.o,$(apk-objs)) apk-static.o +apk.static-libs := $(apk-libs) LDFLAGS_apk.static := -static LIBS_apk.static := -Wl,--as-needed -ldl -Wl,--no-as-needed LDFLAGS_apk += -L$(obj) @@ -70,7 +73,7 @@ LDFLAGS_apk-test += -L$(obj) CFLAGS_ALL += $(OPENSSL_CFLAGS) $(ZLIB_CFLAGS) LIBS := -Wl,--as-needed \ - $(FETCH_LIBS) $(OPENSSL_LIBS) $(ZLIB_LIBS) \ + $(OPENSSL_LIBS) $(ZLIB_LIBS) \ -Wl,--no-as-needed $(obj)/apk: $(LIBAPK-y) |