aboutsummaryrefslogtreecommitdiffstats
path: root/Make.rules
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2017-10-05 10:57:45 +0300
committerTimo Teräs <timo.teras@iki.fi>2017-10-05 16:59:14 +0300
commit86436fce2fe2364bbc9e705ddc92d7733fc8ed75 (patch)
tree9193dddcf9217194e1ac2e74ce920ecc1c349853 /Make.rules
parent9dc6278c7b4ef41810b264ca99b597634511bda1 (diff)
downloadaports-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.tar.bz2
aports-86436fce2fe2364bbc9e705ddc92d7733fc8ed75.tar.xz
build and use bundled libfetch natively
Diffstat (limited to 'Make.rules')
-rw-r--r--Make.rules50
1 files changed, 40 insertions, 10 deletions
diff --git a/Make.rules b/Make.rules
index 6457d6fd70..7f33e0adf5 100644
--- a/Make.rules
+++ b/Make.rules
@@ -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)