ports/mk/targets.mk

176 lines
5.1 KiB
Makefile

# targets.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
ifeq ($(no_objdir),1)
clean_cmd ?= $(MAKE) -C $(srcdir) clean distclean
else
clean_cmd ?= rm -rf $(objdir)
endif
distclean_cmd ?= rm -rf $(objdir) $(srcdir)
ifeq ($(distext),gz)
tarflags += -xzf
endif
ifeq ($(distext),bz2)
tarflags += -xjf
endif
ifeq ($(distext),xz)
tarflags += -xJf
endif
install_cmd ?= $(MAKE) DESTDIR=$(DESTDIR) -C $(objdir) install
all: $(all_deps)
.PHONY: all
install: $(workdir)/.installed
$(info $(grn)=== $(distfullname) installed ===$(reset))
.PHONY: install
package: $(pkglocal)
.PHONY: package
$(info $(grn)=== $(pkgfullname) created ===$(reset))
$(pkglocal): $(pkgdeps) | $(pkgdir)
$(info $(grn)=== creating package $(pkgfullname) ===$(reset))
pkg_create \
-c -"$(comment)" \
-B $(workdir)/BUILD_INFO \
-d $(portdir)/DESCR \
-f $(workdir)/PLIST \
-I / \
-p $(DESTDIR) \
-g root \
-u root \
$@
$(workdir)/.installed: $(pkglocal)
$(info $(grn)=== Installing $(distlocal) ===$(reset))
pkg_add $<
touch $@
$(workdir)/.stripped: $(workdir)/.staged
find $(bindir) -type f -exec strip -s '{}' \; 2>&1 > /dev/null || true
find $(sbindir) -type f -exec strip -s '{}' \; 2>&1 > /dev/null || true
find $(libdir) -type f -exec strip -s '{}' \; 2>&1 > /dev/null || true
find $(libexecdir) -type f -exec strip -s '{}' \; 2>&1 > /dev/null || true
touch $@
$(workdir)/.staged: $(workdir)/.built
$(info $(grn)=== $(distfullname) built ===$(reset))
$(info $(grn)=== Installing for $(distfullname) ===$(reset))
$(pre_install)
$(install_cmd)
$(post_install)
touch $@
$(workdir)/PLIST: $(workdir)/.staged
cd $(DESTDIR) && \
find usr -type f -o -type l | sort -u > $@
$(workdir)/BUILD_INFO: $(workdir)/.staged
@echo ABI=$(ABI) > work/build_info
@echo BUILD_DATE=$$(date -u "+%y-%m-%d %H:%M:%S") +0000 >> work/build_info
@echo BUILD_HOST=$$(uname -a) >> work/build_info
@echo CATEGORIES=$$(basename $$(dirname $(portdir))) >> work/build_info
@echo CC_VERSION=gcc-$$(gcc --version | head -n 1 | awk '{print $$3}') \
>> work/build_info
@echo CFLAGS=$(CFLAGS) >> work/build_info
@echo GLIBC_VERSION=$$(/lib/libc.so.6 | head -n 1 | awk '{print $9}' | \
cut -b 1-4) >> work/build_info
@echo HOMEPAGE=$(pkg_homepage) >> work/build_info
@echo LDFLAGS=$(LDFLAGS) >> work/build_info
@echo LICENSE=$(pkg_license) >> work/build_info
@echo LOCALBASE=/usr/pkg >> work/build_info
@echo MACHINE_ARCH=$$(uname -m) >> work/build_info
@echo MAINTAINER=$(pkg_maintainer) >> work/build_info
@echo OBJECT_FMT=ELF >> work/build_info
@echo OPSYS=Linux >> work/build_info
@echo OS_VERSION=$$(uname -r) >> work/build_info
@echo PKGGNUDIR=gnu >> work/build_info
@echo PKGINFODIR=info >> work/build_info
@echo PKGMANDIR=man >> work/build_info
@echo PKGPATH=$$(basename $$(dirname $(portdir)))/$$(basename $(portdir)) \
>> work/build_info
@echo PKGSYSCONFBASEDIR=/usr/pkg/etc >> work/build_info
@echo PKGSYSCONFDIR=/usr/pkg/etc >> work/build_info
@echo PKGTOOLS_VERSION=$$(pkg_add -V) >> work/build_info
@find $(DESTDIR) -type f | while read f ; \
do if [ "$$(file $$f | grep ELF)" != "" ] ; \
then ldd $$f ; fi ; \
done | awk '{ print $$3 }' | grep -v linux-vdso | sort -u | \
while read f ; \
do echo REQUIRES=$$f >> work/build_info ; done
@for provides in $(pkg_provides) ; \
do echo PROVIDES=$${provides} >> work/build_info ; done
@mv work/build_info $@
$(installdirs):
install -d $@
$(workdir)/.built: $(build_deps) | $(pre_dirs)
$(info $(grn)=== Building for $(distfullname)$(reset))
$(pre_build)
$(build_cmd)
$(post_build)
touch $@
$(config_tgt): $(config_deps) | $(pre_dirs)
$(info $(grn)=== Configuring for $(distfullname) ===$(reset))
$(pre_configure)
$(config_cmd)
$(post_configure)
touch $@
$(srcdir)/.patched: $(patches) $(srcdir)/.dirstamp
$(info $(grn)=== Patching $(srcdir) ===$(reset))
for patch in $(patches) ; do cd $(srcdir) && \
patch -p1 < $(portdir)/$${patch} ; done
touch $@
$(srcdir)/.dirstamp: $(distlocal) $(workdir)/.dependencies_installed | $(workdir)
$(info $(grn)=== Extracting $(distlocal) ===$(reset))
[ "$$(sha512sum $(distlocal) | awk '{ print $$1 }')" == "$(sha512_sum)" ]
tar $(tarflags) $(distlocal) -C work/
touch $@
install_dependencies: $(workdir)/.dependencies_installed
.PHONY: install_dependencies
$(workdir)/.dependencies_installed: | $(workdir)
for dep in $(dependencies) ; \
do depname=$$(basename $${dep}) ; \
if [ $$(pkg_info -qe $${depname}) ] ; \
then make -C /usr/ports/$${dep} install; \
fi ; done
touch $@
ifeq ($(use_configure),1)
show-config_opts:
$(info $(grn)$(config_opts)$(reset))
else
show-config_opts:
$(info $(red)Package does not use configure$(reset))
endif
config.mk: config.mk.in
$(info $(grn)Creating config.mk with default options$(reset))
$(info If you wish to modify the defaults, press Control-C and edit config.mk and then restart the build)
cp config.mk.in config.mk
$(distlocal): | $(distdir)
$(info $(grn)=== Fetching $(distfile) ===$(reset))
wget -c $(dist_remote) -O $@
clean:
$(info $(grn)=== Cleaning for $(distname) ===$(reset))
rm -rf $(portdir)/work
.PHONY: clean