mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
6e2da9672f
The filesystems category houses file systems and file system utilities. It is added mainly to turn the sysutils/fusefs-* pseudo-category into a proper one, but is also useful for the sundry of other file systems related ports found in the tree. Ports that seem like they belong there are moved to the new category. Two ports, sysutils/fusefs-funionfs and sysutils/fusefs-fusepak are not moved as they currently don't fetch and don't have TIMESTAMP set in their distinfo, but that is required to be able to push a rename of the port by the pre-receive hook. Approved by: portmgr (rene) Reviewed by: mat Pull Request: https://github.com/freebsd/freebsd-ports/pull/302 PR: 281988
138 lines
3.8 KiB
Makefile
138 lines
3.8 KiB
Makefile
PORTNAME= ipxe
|
|
DISTVERSION= g20240403
|
|
PORTEPOCH= 1
|
|
CATEGORIES= net
|
|
|
|
MAINTAINER= egypcio@FreeBSD.org
|
|
COMMENT= Open source network boot firmware
|
|
WWW= https://ipxe.org
|
|
|
|
LICENSE= GPLv2
|
|
|
|
ONLY_FOR_ARCHS= amd64 i386
|
|
ONLY_FOR_ARCHS_REASON= not yet ported to anything other than amd64/i386
|
|
|
|
BUILD_DEPENDS= bash:shells/bash \
|
|
syslinux:sysutils/syslinux
|
|
|
|
USES= gmake perl5 shebangfix
|
|
USE_BINUTILS= yes
|
|
USE_GCC= yes:build
|
|
USE_GITHUB= yes
|
|
GH_TAGNAME= 59f27d69358efc91
|
|
USE_PERL5= build
|
|
MAKE_ARGS= AR=${AR} \
|
|
ARCH=${ARCH:S/amd64/i386/} \
|
|
AS=${AS} \
|
|
CC=${CC} \
|
|
HOST_CC=${CC} \
|
|
LD=${LD} \
|
|
NM=${NM} \
|
|
NO_WERROR=1 \
|
|
OBJCOPY=${OBJCOPY} \
|
|
OBJDUMP=${OBJDUMP} \
|
|
PERL=${PERL} \
|
|
RANLIB=${RANLIB} \
|
|
SIZE=${SIZE} \
|
|
V=1
|
|
|
|
# Append user-settable build args from make.conf
|
|
MAKE_ARGS+= ${IPXE_MAKE_ARGS}
|
|
ALL_TARGET= bin/ipxe.dsk bin/ipxe.lkrn bin/ipxe.pxe bin/ipxe.usb \
|
|
bin/undionly.kpxe
|
|
# VMware ROMs
|
|
ALL_TARGET+= bin/8086100f.mrom bin/808610d3.mrom bin/10222000.rom \
|
|
bin/15ad07b0.rom
|
|
SUB_FILES= pkg-message
|
|
WRKSRC_SUBDIR= src
|
|
PLIST_FILES= ${ALL_TARGET:S@^bin/@${DATADIR}/@}
|
|
|
|
# Possible options are listed in ${WRKSRC}/config/*.h and
|
|
# http://ipxe.org/buildcfg. Add a ! prefix to an option to undef it
|
|
# i.e. turn it off.
|
|
_IPXE_BUILDCFG= branding:PRODUCT_NAME="${PKGNAME} (${OPSYS} ${OSREL}/${ARCH})" \
|
|
console:CONSOLE_SERIAL \
|
|
console:KEYBOARD_MAP=us \
|
|
general:!DOWNLOAD_PROTO_FTP \
|
|
general:DOWNLOAD_PROTO_HTTPS \
|
|
general:DOWNLOAD_PROTO_NFS \
|
|
general:IMAGE_TRUST_CMD \
|
|
general:NET_PROTO_IPV6 \
|
|
general:NTP_CMD \
|
|
general:PING_CMD \
|
|
general:POWEROFF_CMD
|
|
|
|
OPTIONS_DEFINE= EFI ISO
|
|
OPTIONS_DEFAULT= EFI ISO
|
|
|
|
EFI_DESC= Create EFI images
|
|
ISO_DESC= Create bootable CD image
|
|
|
|
EFI_BUILD_DEPENDS= mformat:filesystems/mtools
|
|
_EFI_ARCHS= ${ARCH:Mamd64:S/amd64/x86_64/} i386
|
|
_EFI_TARGETS= ipxe snp snponly
|
|
.for _arch in ${_EFI_ARCHS}
|
|
. for _target in ${_EFI_TARGETS}
|
|
EFI_PLIST_FILES+= ${DATADIR}/${_target}.efi-${_arch}
|
|
. endfor
|
|
EFI_PLIST_FILES+= ${DATADIR}/ipxe.efi-${_arch}.usb
|
|
.endfor
|
|
|
|
ISO_BUILD_DEPENDS= mkisofs:sysutils/cdrtools
|
|
ISO_MAKE_ARGS= ISOLINUX_BIN="${WRKSRC}/isolinux.bin" \
|
|
LDLINUX_C32="${LOCALBASE}/share/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32"
|
|
ISO_ALL_TARGET= bin/ipxe.iso
|
|
|
|
.include <bsd.port.pre.mk>
|
|
|
|
# Add user supplied build configuration after port options etc have
|
|
# been processed as they might want to overwrite some settings.
|
|
_IPXE_BUILDCFG+= ${IPXE_BUILDCFG}
|
|
|
|
# XXX: iPXE uses csplit when embedding certificates and assumes
|
|
# it's GNU csplit, so give it what it wants as a workaround if
|
|
# CERT=... is in {IPXE_,}MAKE_ARGS.
|
|
.if ${MAKE_ARGS:MCERT=*}
|
|
BUILD_DEPENDS+= gcsplit:sysutils/coreutils
|
|
MAKE_ARGS+= CSPLIT=gcsplit
|
|
.endif
|
|
|
|
# https://github.com/ipxe/ipxe/pull/794
|
|
post-patch:
|
|
${REINPLACE_CMD} "s|VERSION_MINOR.*0|VERSION_MINOR=21|; s|VERSION_PATCH.*0|VERSION_PATCH=1|" \
|
|
${WRKSRC}/Makefile
|
|
|
|
do-configure:
|
|
.for _cat _opt in ${_IPXE_BUILDCFG:C/\:/ /}
|
|
@${ECHO_CMD} '#undef ${_opt:S/^!//:C/(.*)=(.*)/\1/}' >> ${WRKSRC}/config/local/${_cat}.h
|
|
.if ${_opt:N!*}
|
|
@${ECHO_CMD} '#define ${_opt:C/=/ /:S/^'//:S/'$//}' >> ${WRKSRC}/config/local/${_cat}.h
|
|
.endif
|
|
.endfor
|
|
|
|
pre-build-ISO-on:
|
|
# ISO creation fails if isolinux.bin is read only
|
|
${INSTALL} -m 644 ${LOCALBASE}/share/syslinux/bios/core/isolinux.bin ${WRKSRC}/isolinux.bin
|
|
|
|
do-build-EFI-on:
|
|
.for _arch in ${_EFI_ARCHS}
|
|
${DO_MAKE_BUILD} ARCH=${_arch} -C ${WRKSRC} ${_EFI_TARGETS:@.target.@bin-${_arch}-efi/${.target.}.efi@} \
|
|
bin-${_arch}-efi/ipxe.usb
|
|
.endfor
|
|
|
|
do-install:
|
|
@${MKDIR} ${STAGEDIR}${DATADIR}
|
|
cd ${WRKSRC} && ${INSTALL_DATA} ${ALL_TARGET} ${STAGEDIR}${DATADIR}
|
|
|
|
do-install-EFI-on:
|
|
.for _arch in ${_EFI_ARCHS}
|
|
. for _target in ${_EFI_TARGETS}
|
|
${INSTALL_DATA} ${WRKSRC}/bin-${_arch}-efi/${_target}.efi \
|
|
${STAGEDIR}${DATADIR}/${_target}.efi-${_arch}
|
|
. endfor
|
|
${INSTALL_DATA} ${WRKSRC}/bin-${_arch}-efi/ipxe.usb \
|
|
${STAGEDIR}${DATADIR}/ipxe.efi-${_arch}.usb
|
|
.endfor
|
|
|
|
.include <bsd.port.post.mk>
|