CONTRIB.build/ = $(BUILD/)contrib/
-CONTRIB.download/ = $(PROJECT/)download/
+CONTRIB.download/ = $(SRC/)download/
CONTRIB.host = $(if $(filter 1,$(BUILD.cross)),$(BUILD.spec))
###############################################################################
##
## common values useful across targets
##
- $(1).src/ = $$(PROJECT/)contrib/$($(1).name)/
+ $(1).src/ = $$(SRC/)contrib/$($(1).name)/
$(1).build/ = $$(CONTRIB.build/)$($(1).name)/
$(1).deps = $$(foreach n,$($(1).prerequisites),$$($$n.INSTALL.target))
##
## target: extract
##
- $(1).EXTRACT.tarbase = $$(patsubst %.tar.gz,%,$$(notdir $$($(1).FETCH.url)))
- $(1).EXTRACT.target/ = $$($(1).build/)$$($(1).EXTRACT.tarbase)/
+ $(1).EXTRACT.tarbase = $$(strip $$(foreach x,tar.bz2 tar.gz,$$(patsubst %.$$(x),%,$$(filter %.$$(x),$$(notdir $$($(1).FETCH.url))))))
+ $(1).EXTRACT.dir/ = $$($(1).build/)$$($(1).EXTRACT.tarbase)/
+ $(1).EXTRACT.target = $$($(1).build/).stamp.extract
define $(1).EXTRACT
+ $$(RM.exe) -fr $$($(1).EXTRACT.dir/)
$$(TAR.exe) xfC $$($(1).FETCH.tar) $$($(1).build/)
+ $$(TOUCH.exe) $$@
endef
##
# extra line feed is required
define $(1).PATCH.item
- $$(PATCH.exe) -t -p1 -d $$(1) < $$(2)
+ $$(PATCH.exe) -t -N -p1 -d $$(1) < $$(2)
endef
$(1).PATCH.target = $$($(1).build/).stamp.patch
define $(1).PATCH
- $$(foreach p,$$($(1).PATCH.srcs),$$(call $(1).PATCH.item,$$($(1).EXTRACT.target/),$$(p)))
+ $$(foreach p,$$($(1).PATCH.srcs),$$(call $(1).PATCH.item,$$($(1).EXTRACT.dir/),$$(p)))
+ $$(TOUCH.exe) $$@
endef
##
## target: configure
##
$(1).CONFIGURE.sete = set -e;
- $(1).CONFIGURE.dir = $$($(1).EXTRACT.target/)
+ $(1).CONFIGURE.dir = $$($(1).EXTRACT.dir/)
$(1).CONFIGURE.bootstrap =
$(1).CONFIGURE.exe = ./configure
$(1).CONFIGURE.host = $$(CONTRIB.host)
$(1).CONFIGURE.args = !sete @dir !bootstrap !env !exe @host @prefix !deps !shared !static !extra
$(1).CONFIGURE.env.CC = CC=$$($(1).GCC.gcc)
- $(1).CONFIGURE.env.CFLAGS = CFLAGS="$$(call fn.ARGS,$(1).GCC,*archs)"
+ $(1).CONFIGURE.env.CFLAGS = CFLAGS="$$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver ?extra)"
$(1).CONFIGURE.env.CXX = CXX=$$($(1).GCC.gxx)
- $(1).CONFIGURE.env.CXXFLAGS = CXXFLAGS="$$(call fn.ARGS,$(1).GCC,*archs)"
- $(1).CONFIGURE.env.CPPFLAGS = CPPFLAGS="$$(call fn.ARGS,$(1).GCC,*archs)"
- $(1).CONFIGURE.env.LDFLAGS = LDFLAGS="$$(call fn.ARGS,$(1).GCC,*archs)"
+ $(1).CONFIGURE.env.CXXFLAGS = CXXFLAGS="$$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver ?extra)"
+ $(1).CONFIGURE.env.CPPFLAGS = CPPFLAGS="$$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver ?extra)"
+ $(1).CONFIGURE.env.LDFLAGS = LDFLAGS="$$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver)"
$(1).CONFIGURE.env.args = !CC !CFLAGS !CXX !CXXFLAGS !CPPFLAGS !LDFLAGS
$(1).CONFIGURE.env = $$(call fn.ARGS,$(1).CONFIGURE.env,$$($(1).CONFIGURE.env.args))
$(1).CONFIGURE.target = $$($(1).build/).stamp.configure
define $(1).CONFIGURE
$$(call fn.ARGS,$(1).CONFIGURE,$$($(1).CONFIGURE.args))
+ $$(TOUCH.exe) $$@
endef
##
## target: build
##
$(1).BUILD.make = $$(MAKE)
- $(1).BUILD.dir = $$($(1).EXTRACT.target/)
+ $(1).BUILD.dir = $$($(1).EXTRACT.dir/)
$(1).BUILD.extra =
$(1).BUILD.ntargets =
$(1).BUILD.target = $$($(1).build/).stamp.build
define $(1).BUILD
$$(call fn.ARGS,$(1).BUILD,$$($(1).BUILD.args))
+ $$(TOUCH.exe) $$@
endef
##
## target: install
##
-
$(1).INSTALL.make = $$(MAKE)
- $(1).INSTALL.dir = $$($(1).EXTRACT.target/)
+ $(1).INSTALL.dir = $$($(1).EXTRACT.dir/)
$(1).INSTALL.extra =
$(1).INSTALL.ntargets =
$(1).INSTALL.args = !make @dir !extra !ntargets
$(1).INSTALL.args.dir = -C $$(1) install
+ $(1).INSTALL.mkdirs = $$(CONTRIB.build/)lib/ $$(CONTRIB.build/)include/
$(1).INSTALL.target = $$($(1).build/).stamp.install
define $(1).INSTALL
$$(call fn.ARGS,$(1).INSTALL,$$($(1).INSTALL.args))
+ $$(TOUCH.exe) $$@
endef
##
## target: uninstall
##
$(1).UNINSTALL.make = $$(MAKE)
- $(1).UNINSTALL.dir = $$($(1).EXTRACT.target/)
+ $(1).UNINSTALL.dir = $$($(1).EXTRACT.dir/)
$(1).UNINSTALL.extra =
$(1).UNINSTALL.ntargets = uninstall
define $(1).UNINSTALL
$$(call fn.ARGS,$(1).UNINSTALL,$$($(1).UNINSTALL.args))
+ $$(RM.exe) -f $$($(1).INSTALL.target)
endef
##
## target: clean
##
$(1).CLEAN.make = $$(MAKE)
- $(1).CLEAN.dir = $$($(1).EXTRACT.target/)
+ $(1).CLEAN.dir = $$($(1).EXTRACT.dir/)
$(1).CLEAN.extra =
$(1).CLEAN.ntargets = clean
define $(1).CLEAN
$$(call fn.ARGS,$(1).CLEAN,$$($(1).CLEAN.args))
+ $$(RM.exe) -f $$($(1).BUILD.target)
endef
+ ##
## other values used to aid prerequisite dirs and cleanup
##
$(1).out += $$($(1).build/)
$(1).out += $$($(1).FETCH.target)
+ $(1).out += $$($(1).EXTRACT.target)
$(1).out += $$($(1).PATCH.target)
$(1).out += $$($(1).CONFIGURE.target)
- $(1).out += $$($(1).ALL.target)
+ $(1).out += $$($(1).BUILD.target)
+ $(1).out += $$($(1).INSTALL.mkdirs)
$(1).out += $$($(1).INSTALL.target)
BUILD.out += $$($(1).out)
## target: extract
## must touch dir after extraction because old timestamp is restored via tar.
##
-$($(1).name).extract: | $$($(1).EXTRACT.target/)
+$($(1).name).extract: $$($(1).EXTRACT.target)
-$$($(1).EXTRACT.target/): | $$(dir $$($(1).build/))
-$$($(1).EXTRACT.target/): $$($(1).FETCH.target)
+$$($(1).EXTRACT.target): | $$(dir $$($(1).EXTRACT.target))
+$$($(1).EXTRACT.target): $$($(1).FETCH.target)
$$($(1).EXTRACT)
- $$(TOUCH.exe) $$@
+
+$($(1).name).extract.touch:
+ $$(TOUCH.exe) $$($(1).EXTRACT.target)
+
+$($(1).name).extract.untouch:
+ $$(RM.exe) -f $$($(1).EXTRACT.target)
##
## target: patch
$($(1).name).patch: $$($(1).PATCH.target)
$$($(1).PATCH.target): | $$(dir $$($(1).PATCH.target))
-$$($(1).PATCH.target): | $$($(1).EXTRACT.target/)
+$$($(1).PATCH.target): $$($(1).EXTRACT.target)
$$($(1).PATCH)
- $$(TOUCH.exe) $$@
+
+$($(1).name).patch.touch:
+ $$(TOUCH.exe) $$($(1).PATCH.target)
+
+$($(1).name).patch.untouch:
+ $$(RM.exe) -f $$($(1).PATCH.target)
##
## target: configure
$$($(1).CONFIGURE.target): $$($(1).deps)
$$($(1).CONFIGURE.target): $$($(1).PATCH.target)
$$($(1).CONFIGURE)
- $$(TOUCH.exe) $$@
+
+$($(1).name).configure.touch:
+ $$(TOUCH.exe) $$($(1).CONFIGURE.target)
+
+$($(1).name).configure.untouch:
+ $$(RM.exe) -f $$($(1).CONFIGURE.target)
##
## target: build
$$($(1).BUILD.target): | $$(dir $$($(1).BUILD.target))
$$($(1).BUILD.target): $$($(1).CONFIGURE.target)
+ -$$($(1).CLEAN)
+$$($(1).BUILD)
- $$(TOUCH.exe) $$@
+
+$($(1).name).build.touch:
+ $$(TOUCH.exe) $$($(1).BUILD.target)
+
+$($(1).name).build.untouch:
+ $$(RM.exe) -f $$($(1).BUILD.target)
##
## target: install
##
$($(1).name).install: $$($(1).INSTALL.target)
-$$($(1).INSTALL.target): | $$(dir $$($(1).INSTALL.target))
+$$($(1).INSTALL.target): | $$(dir $$($(1).INSTALL.target)) $$($(1).INSTALL.mkdirs)
$$($(1).INSTALL.target): $$($(1).BUILD.target)
$$($(1).INSTALL)
- $$(TOUCH.exe) $$@
+
+$($(1).name).install.touch:
+ $$(TOUCH.exe) $$($(1).INSTALL.target)
+
+$($(1).name).install.untouch:
+ $$(RM.exe) -f $$($(1).INSTALL.target)
##
## target: uninstall
##
$($(1).name).uninstall:
-$$($(1).UNINSTALL)
- $$(RM.exe) -f $$($(1).INSTALL.target)
##
## target: clean
##
$($(1).name).clean:
-$$($(1).CLEAN)
- $$(RM.exe) -f $$($(1).BUILD.target)
##
## target: xclean