diff --git a/archivers/bzip2/builtin.mk b/archivers/bzip2/builtin.mk index 6ddb569a2b90..53a3a54125e2 100644 --- a/archivers/bzip2/builtin.mk +++ b/archivers/bzip2/builtin.mk @@ -39,7 +39,7 @@ BUILTIN_VERSION.bzip2!= \ }; \ print vers; \ }; \ - ' ${H_BZIP2:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_BZIP2:Q} BUILTIN_PKG.bzip2= bzip2-${BUILTIN_VERSION.bzip2} .endif diff --git a/archivers/libarchive/builtin.mk b/archivers/libarchive/builtin.mk index cb5aa0d250ce..e3aa04e66219 100644 --- a/archivers/libarchive/builtin.mk +++ b/archivers/libarchive/builtin.mk @@ -53,7 +53,7 @@ BUILTIN_VERSION.libarchive!= \ else if (found == 2) \ print vers_str; \ } \ - ' ${H_ARCHIVE:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_ARCHIVE:Q} . if !empty(BUILTIN_VERSION.libarchive) BUILTIN_PKG.libarchive= libarchive-${BUILTIN_VERSION.libarchive} . else diff --git a/archivers/xz/builtin.mk b/archivers/xz/builtin.mk index a58876b17458..c4b44de97017 100644 --- a/archivers/xz/builtin.mk +++ b/archivers/xz/builtin.mk @@ -37,7 +37,7 @@ BUILTIN_VERSION.xz!= \ } \ } \ END { printf "%s%s%s%s\n", M, m, p, s} \ - ' ${H_LZMA_VERSION:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_LZMA_VERSION:Q} BUILTIN_PKG.xz= xz-${BUILTIN_VERSION.xz} .endif diff --git a/converters/libiconv/builtin.mk b/converters/libiconv/builtin.mk index b058bc6d0175..d7595ac13191 100644 --- a/converters/libiconv/builtin.mk +++ b/converters/libiconv/builtin.mk @@ -53,7 +53,7 @@ BUILTIN_VERSION.iconv!= \ printf "%d.%d\n", M, m; \ exit 0; \ } \ - ' ${H_ICONV} + ' ${_CROSS_DESTDIR:U:Q}${H_ICONV:Q} # # If the native GNU iconv is ABI version 1.9, then treat it the same # as the latest version on the libiconv-1.9.x branch. diff --git a/cross/cross-libtool-base/Makefile b/cross/cross-libtool-base/Makefile index c2b4abedd693..4fbeb7a2c165 100644 --- a/cross/cross-libtool-base/Makefile +++ b/cross/cross-libtool-base/Makefile @@ -37,7 +37,7 @@ LIBTOOL_CROSS_COMPILE= yes # XXX Tweaked for cross-compilation. #PKGNAME= ${DISTNAME:S/-/-base-/} -PKGNAME= ${DISTNAME:S/^libtool-/cross-libtool-base-${MACHINE_ARCH}-/} +PKGNAME= ${DISTNAME:S/^libtool-/cross-libtool-base-${MACHINE_PLATFORM}-/} PKGREVISION= 8 COMMENT= Generic shared library support script (the script itself) @@ -64,10 +64,11 @@ CFLAGS.SunOS+= ${_COMPILER_ABI_FLAG.${ABI}} # and Fortran compilers. # USE_LANGUAGES= c c++ -# XXX Added for cross-compilation. XXX Should be ${TARGET_ARCH}, but -# currently we have to fake-cross-compile libtool because it's broken -# upstream. -GNU_CONFIGURE_PREFIX= ${PREFIX}/cross-${MACHINE_ARCH} +# XXX Added for cross-compilation. XXX Should be +# ${TARGET_MACHINE_PLATFORM}, but currently we have to +# fake-cross-compile libtool because it's broken upstream. +GNU_CONFIGURE_PREFIX= ${PREFIX}/cross-${MACHINE_PLATFORM} +PLIST_SUBST+= MACHINE_PLATFORM=${MACHINE_PLATFORM:Q} CONFIGURE_ARGS+= --disable-ltdl-install CONFIGURE_ARGS+= F77=no FC=no @@ -96,7 +97,7 @@ post-build: ${FILESDIR}/shlibtool.in > ${WRKSRC}/shlibtool post-install: - ${INSTALL_SCRIPT} ${WRKSRC}/shlibtool ${DESTDIR}${PREFIX}/cross-${MACHINE_ARCH}/bin/shlibtool + ${INSTALL_SCRIPT} ${WRKSRC}/shlibtool ${DESTDIR}${PREFIX}/cross-${MACHINE_PLATFORM}/bin/shlibtool BUILDLINK_DEPMETHOD.dlcompat= build diff --git a/cross/cross-libtool-base/PLIST b/cross/cross-libtool-base/PLIST index a1db9768dde3..c78dfac0fcb5 100644 --- a/cross/cross-libtool-base/PLIST +++ b/cross/cross-libtool-base/PLIST @@ -1,55 +1,55 @@ @comment $NetBSD: PLIST,v 1.3 2019/07/09 15:45:25 riastradh Exp $ -cross-${MACHINE_ARCH}/bin/libtool -cross-${MACHINE_ARCH}/bin/libtoolize -cross-${MACHINE_ARCH}/bin/shlibtool -cross-${MACHINE_ARCH}/man/man1/libtool.1 -cross-${MACHINE_ARCH}/man/man1/libtoolize.1 -cross-${MACHINE_ARCH}/share/aclocal/libtool.m4 -cross-${MACHINE_ARCH}/share/aclocal/ltargz.m4 -cross-${MACHINE_ARCH}/share/aclocal/ltdl.m4 -cross-${MACHINE_ARCH}/share/aclocal/ltoptions.m4 -cross-${MACHINE_ARCH}/share/aclocal/ltsugar.m4 -cross-${MACHINE_ARCH}/share/aclocal/ltversion.m4 -cross-${MACHINE_ARCH}/share/aclocal/lt~obsolete.m4 -cross-${MACHINE_ARCH}/share/libtool/COPYING.LIB -cross-${MACHINE_ARCH}/share/libtool/Makefile.am -cross-${MACHINE_ARCH}/share/libtool/Makefile.in -cross-${MACHINE_ARCH}/share/libtool/README -cross-${MACHINE_ARCH}/share/libtool/aclocal.m4 -cross-${MACHINE_ARCH}/share/libtool/build-aux/compile -cross-${MACHINE_ARCH}/share/libtool/build-aux/config.guess -cross-${MACHINE_ARCH}/share/libtool/build-aux/config.sub -cross-${MACHINE_ARCH}/share/libtool/build-aux/depcomp -cross-${MACHINE_ARCH}/share/libtool/build-aux/install-sh -cross-${MACHINE_ARCH}/share/libtool/build-aux/ltmain.sh -cross-${MACHINE_ARCH}/share/libtool/build-aux/missing -cross-${MACHINE_ARCH}/share/libtool/config-h.in -cross-${MACHINE_ARCH}/share/libtool/configure -cross-${MACHINE_ARCH}/share/libtool/configure.ac -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__alloc.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__argz_.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__dirent.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__glibc.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__private.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt__strl.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt_dlloader.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt_error.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/lt_system.h -cross-${MACHINE_ARCH}/share/libtool/libltdl/slist.h -cross-${MACHINE_ARCH}/share/libtool/loaders/dld_link.c -cross-${MACHINE_ARCH}/share/libtool/loaders/dlopen.c -cross-${MACHINE_ARCH}/share/libtool/loaders/dyld.c -cross-${MACHINE_ARCH}/share/libtool/loaders/load_add_on.c -cross-${MACHINE_ARCH}/share/libtool/loaders/loadlibrary.c -cross-${MACHINE_ARCH}/share/libtool/loaders/preopen.c -cross-${MACHINE_ARCH}/share/libtool/loaders/shl_load.c -cross-${MACHINE_ARCH}/share/libtool/lt__alloc.c -cross-${MACHINE_ARCH}/share/libtool/lt__argz.c -cross-${MACHINE_ARCH}/share/libtool/lt__dirent.c -cross-${MACHINE_ARCH}/share/libtool/lt__strl.c -cross-${MACHINE_ARCH}/share/libtool/lt_dlloader.c -cross-${MACHINE_ARCH}/share/libtool/lt_error.c -cross-${MACHINE_ARCH}/share/libtool/ltdl.c -cross-${MACHINE_ARCH}/share/libtool/ltdl.h -cross-${MACHINE_ARCH}/share/libtool/ltdl.mk -cross-${MACHINE_ARCH}/share/libtool/slist.c +cross-${MACHINE_PLATFORM}/bin/libtool +cross-${MACHINE_PLATFORM}/bin/libtoolize +cross-${MACHINE_PLATFORM}/bin/shlibtool +cross-${MACHINE_PLATFORM}/man/man1/libtool.1 +cross-${MACHINE_PLATFORM}/man/man1/libtoolize.1 +cross-${MACHINE_PLATFORM}/share/aclocal/libtool.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/ltargz.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/ltdl.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/ltoptions.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/ltsugar.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/ltversion.m4 +cross-${MACHINE_PLATFORM}/share/aclocal/lt~obsolete.m4 +cross-${MACHINE_PLATFORM}/share/libtool/COPYING.LIB +cross-${MACHINE_PLATFORM}/share/libtool/Makefile.am +cross-${MACHINE_PLATFORM}/share/libtool/Makefile.in +cross-${MACHINE_PLATFORM}/share/libtool/README +cross-${MACHINE_PLATFORM}/share/libtool/aclocal.m4 +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/compile +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/config.guess +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/config.sub +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/depcomp +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/install-sh +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/ltmain.sh +cross-${MACHINE_PLATFORM}/share/libtool/build-aux/missing +cross-${MACHINE_PLATFORM}/share/libtool/config-h.in +cross-${MACHINE_PLATFORM}/share/libtool/configure +cross-${MACHINE_PLATFORM}/share/libtool/configure.ac +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__alloc.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__argz_.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__dirent.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__glibc.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__private.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt__strl.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt_dlloader.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt_error.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/lt_system.h +cross-${MACHINE_PLATFORM}/share/libtool/libltdl/slist.h +cross-${MACHINE_PLATFORM}/share/libtool/loaders/dld_link.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/dlopen.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/dyld.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/load_add_on.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/loadlibrary.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/preopen.c +cross-${MACHINE_PLATFORM}/share/libtool/loaders/shl_load.c +cross-${MACHINE_PLATFORM}/share/libtool/lt__alloc.c +cross-${MACHINE_PLATFORM}/share/libtool/lt__argz.c +cross-${MACHINE_PLATFORM}/share/libtool/lt__dirent.c +cross-${MACHINE_PLATFORM}/share/libtool/lt__strl.c +cross-${MACHINE_PLATFORM}/share/libtool/lt_dlloader.c +cross-${MACHINE_PLATFORM}/share/libtool/lt_error.c +cross-${MACHINE_PLATFORM}/share/libtool/ltdl.c +cross-${MACHINE_PLATFORM}/share/libtool/ltdl.h +cross-${MACHINE_PLATFORM}/share/libtool/ltdl.mk +cross-${MACHINE_PLATFORM}/share/libtool/slist.c diff --git a/devel/fossil/distinfo b/devel/fossil/distinfo index 15499bd84166..27ef87280d0d 100644 --- a/devel/fossil/distinfo +++ b/devel/fossil/distinfo @@ -3,3 +3,4 @@ $NetBSD: distinfo,v 1.52 2024/01/04 18:26:29 js Exp $ BLAKE2s (fossil-src-2.23.tar.gz) = e1581c5e194e14f1eef03e71cce3656dd9d5769147474900c7ea32f88e28ddc5 SHA512 (fossil-src-2.23.tar.gz) = bba67e16b26b97aa40023a4a2aa3b2abfc9393ec8d3244ec88dab5b7d2c4d46e7d6ee89b008a6bce1f18c96c351c8d41d64f02ba28c0eb3eb04d01e308f3335b Size (fossil-src-2.23.tar.gz) = 6799177 bytes +SHA1 (patch-autosetup_autosetup-find-tclsh) = 2baa22e090141e14a3bba9395ff8afb633f4a9e8 diff --git a/devel/fossil/patches/patch-autosetup_autosetup-find-tclsh b/devel/fossil/patches/patch-autosetup_autosetup-find-tclsh new file mode 100644 index 000000000000..4087d2eb48fd --- /dev/null +++ b/devel/fossil/patches/patch-autosetup_autosetup-find-tclsh @@ -0,0 +1,16 @@ +$NetBSD$ + +Treat CC_FOR_BUILD as a single command, not a list of separate possible +commands. + +--- autosetup/autosetup-find-tclsh.orig 2023-11-01 18:56:47.000000000 +0000 ++++ autosetup/autosetup-find-tclsh +@@ -9,7 +9,7 @@ for tclsh in $autosetup_tclsh jimsh tcls + { $tclsh "$d/autosetup-test-tclsh"; } 2>/dev/null && exit 0 + done + echo 1>&2 "No installed jimsh or tclsh, building local bootstrap jimsh0" +-for cc in ${CC_FOR_BUILD:-cc} gcc; do ++for cc in "${CC_FOR_BUILD:-cc}" gcc; do + { $cc -o "$d/jimsh0" "$d/jimsh0.c"; } 2>/dev/null || continue + "$d/jimsh0" "$d/autosetup-test-tclsh" && exit 0 + done diff --git a/devel/gmp/builtin.mk b/devel/gmp/builtin.mk index 175f9f4fb891..053a2395c582 100644 --- a/devel/gmp/builtin.mk +++ b/devel/gmp/builtin.mk @@ -33,7 +33,8 @@ MAKEVARS+= IS_BUILTIN.gmp .if !defined(BUILTIN_PKG.gmp) && \ ${IS_BUILTIN.gmp:tl} == yes && \ empty(H_GMP:M__nonexistent__) -BUILTIN_VERSION.gmp!= ${BUILTIN_VERSION_SCRIPT.gmp} ${H_GMP} +BUILTIN_VERSION.gmp!= \ + ${BUILTIN_VERSION_SCRIPT.gmp} ${_CROSS_DESTDIR:U:Q}${H_GMP:Q} BUILTIN_PKG.gmp= gmp-${BUILTIN_VERSION.gmp} .endif MAKEVARS+= BUILTIN_PKG.gmp diff --git a/devel/libexecinfo/builtin.mk b/devel/libexecinfo/builtin.mk index ccdbcacb9bd0..0a5adb0193e0 100644 --- a/devel/libexecinfo/builtin.mk +++ b/devel/libexecinfo/builtin.mk @@ -56,7 +56,8 @@ CHECK_BUILTIN.libexecinfo?= no . if !empty(USE_BUILTIN.libexecinfo:M[nN][oO]) _BLTN_LIBEXECINFO= -lexecinfo . else -. if exists(/usr/include/execinfo.h) && (${OPSYS} == "NetBSD" || ${OPSYS} == "FreeBSD") +. if exists(${_CROSS_DESTDIR:U}/usr/include/execinfo.h) && \ + (${OPSYS} == "NetBSD" || ${OPSYS} == "FreeBSD") _BLTN_LIBEXECINFO= -lexecinfo . else _BLTN_LIBEXECINFO= # empty diff --git a/devel/libuuid/builtin.mk b/devel/libuuid/builtin.mk index 244944ff27aa..c7391f3a002c 100644 --- a/devel/libuuid/builtin.mk +++ b/devel/libuuid/builtin.mk @@ -31,7 +31,8 @@ MAKEVARS+= IS_BUILTIN.libuuid .if !defined(BUILTIN_PKG.libuuid) && \ !empty(IS_BUILTIN.libuuid:M[yY][eE][sS]) . if empty(UUID_PC:M__nonexistent__) -BUILTIN_VERSION.libuuid!= ${SED} -n -e 's/Version: //p' ${UUID_PC} +BUILTIN_VERSION.libuuid!= \ + ${SED} -n -e 's/Version: //p' ${_CROSS_DESTDIR:U:Q}${UUID_PC:Q} BUILTIN_PKG.libuuid= libuuid-${BUILTIN_VERSION.libuuid} . else BUILTIN_PKG.libuuid= libuuid-2.18 # whatever, as long as it is big enough diff --git a/devel/meson/build.mk b/devel/meson/build.mk index a697cf804fae..6200bab9047a 100644 --- a/devel/meson/build.mk +++ b/devel/meson/build.mk @@ -28,6 +28,7 @@ MAKE_ENV+= CMAKE=${TOOLS_PATH.false} .include "../../mk/bsd.prefs.mk" .if ${USE_CROSS_COMPILE:U:tl} == yes + MESON_CPU_FAMILY.amd64= x86_64 MESON_CPU_FAMILY.arm26?= arm MESON_CPU_FAMILY.arm32?= arm @@ -89,31 +90,40 @@ MESON_CROSS_FILE= ${WRKDIR}/.meson_cross meson-configure: ${MESON_CROSS_FILE} ${MESON_CROSS_FILE}: @${STEP_MSG} Creating meson cross file - ${RUN}${ECHO} '[properties]' >$@.tmp + ${RUN}${ECHO} '[properties]' >${.TARGET}.tmp . for _v_ in ${MESON_CROSS_VARS} . if defined(MESON_CROSS.${_v_}) - ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${_v_}:Q} >>$@.tmp + ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${_v_}:Q} >>${.TARGET}.tmp . endif . endfor . for _v_ in ${MESON_CROSS_OPSYS_VARS} . if defined(MESON_CROSS.${OPSYS}.${_v_}) - ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${OPSYS}.${_v_}:Q} >>$@.tmp + ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${OPSYS}.${_v_}:Q} \ + >>${.TARGET}.tmp . endif . endfor . for _v_ in ${MESON_CROSS_ARCH_VARS} . if defined(MESON_CROSS.${MACHINE_ARCH}.${_v_}) - ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${MACHINE_ARCH}.${_v_}:Q} >>$@.tmp + ${RUN}${ECHO} ${_v_} = ${MESON_CROSS.${MACHINE_ARCH}.${_v_}:Q} \ + >>${.TARGET}.tmp +. endif +. endfor + ${RUN}${ECHO} '[host_machine]' >>${.TARGET}.tmp + ${RUN}${ECHO} "system = '${LOWER_OPSYS}'" >>${.TARGET}.tmp + ${RUN}${ECHO} "cpu_family = '${MESON_CPU_FAMILY}'" >>${.TARGET}.tmp + ${RUN}${ECHO} "cpu = '${MESON_CPU}'" >>${.TARGET}.tmp + ${RUN}${ECHO} "endian = '${MESON_CPU_ENDIAN}'" >>${.TARGET}.tmp + ${RUN}${ECHO} '[binaries]' >>${.TARGET}.tmp +. for _v_ in ${MESON_CROSS_BINARIES} +. if defined(MESON_CROSS_BINARY.${_v_}) + ${RUN}${ECHO} ${_v_} = \'${MESON_CROSS_BINARY.${_v_}:Q}\' \ + >>${.TARGET}.tmp . endif . endfor - ${RUN}${ECHO} '[host_machine]' >>$@.tmp - ${RUN}${ECHO} "system = '${LOWER_OPSYS}'" >>$@.tmp - ${RUN}${ECHO} "cpu_family = '${MESON_CPU_FAMILY}'" >>$@.tmp - ${RUN}${ECHO} "cpu = '${MESON_CPU}'" >>$@.tmp - ${RUN}${ECHO} "endian = '${MESON_CPU_ENDIAN}'" >>$@.tmp - ${RUN}${MV} -f $@.tmp $@ + ${RUN}${MV} -f ${.TARGET}.tmp ${.TARGET} MESON_CROSS_ARGS+= --cross-file ${MESON_CROSS_FILE:Q} -.endif +.endif # ${USE_CROSS_COMPILE:U:tl} == yes do-configure: meson-configure meson-configure: @@ -174,9 +184,72 @@ _PKG_VARS.meson+= TEST_DIRS TEST_ENV _PKG_VARS.meson+= INSTALL_DIRS INSTALL_ENV _PKG_VARS.meson+= LLVM_CONFIG_PATH _PKG_VARS.meson+= USE_CMAKE MESON_ARGS +_PKG_VARS.meson+= MESON_CROSS_ARCH_VARS +_PKG_VARS.meson+= MESON_CROSS_OPSYS_VARS +_PKG_VARS.meson+= MESON_CROSS_VARS MESON_CROSS.* +_PKG_VARS.meson+= MESON_CROSS_BINARIES MESON_CROSS_BINARY.* _USER_VARS.meson= MAKE_JOBS PKG_SYSCONFDIR -_USE_VARS.meson= TOOLS_PATH.false WRKSRC PREFIX PKGMANDIR +_USE_VARS.meson= TOOLS_PATH.false WRKDIR WRKSRC PREFIX PKGMANDIR +_USE_VARS.meson+= MACHINE_ARCH +_USE_VARS.meson+= LOWER_OPSYS +_USE_VARS.meson+= OPSYS +_USE_VARS.meson+= USE_CROSS_COMPILE +_USE_VARS.meson+= _CROSS_DESTDIR _USE_VARS.meson+= _MAKE_JOBS_N -_DEF_VARS.meson= TOOL_DEPENDS +_DEF_VARS.meson+= MESON_CPU +_DEF_VARS.meson+= MESON_CPU_ENDIAN +_DEF_VARS.meson+= MESON_CPU_FAMILY +_DEF_VARS.meson+= TOOL_DEPENDS +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmeb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmhfeb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv4eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv5eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv6eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv6hfeb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv7eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.earmv7hfeb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.mips64eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.mipseb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.powerpc +_IGN_VARS.meson+= MESON_CPU_ENDIAN.powerpc64 +_IGN_VARS.meson+= MESON_CPU_ENDIAN.sh3eb +_IGN_VARS.meson+= MESON_CPU_ENDIAN.sparc +_IGN_VARS.meson+= MESON_CPU_ENDIAN.sparc64 +_IGN_VARS.meson+= MESON_CPU_FAMILY.amd64 +_IGN_VARS.meson+= MESON_CPU_FAMILY.arm26 +_IGN_VARS.meson+= MESON_CPU_FAMILY.arm32 +_IGN_VARS.meson+= MESON_CPU_FAMILY.earm +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmeb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmhf +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmhfeb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv4 +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv4eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv5 +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv5eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv6 +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv6eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv6hf +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv6hfeb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv7 +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv7eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv7hf +_IGN_VARS.meson+= MESON_CPU_FAMILY.earmv7hfeb +_IGN_VARS.meson+= MESON_CPU_FAMILY.hppa +_IGN_VARS.meson+= MESON_CPU_FAMILY.i386 +_IGN_VARS.meson+= MESON_CPU_FAMILY.i486 +_IGN_VARS.meson+= MESON_CPU_FAMILY.i586 +_IGN_VARS.meson+= MESON_CPU_FAMILY.i686 +_IGN_VARS.meson+= MESON_CPU_FAMILY.m68000 +_IGN_VARS.meson+= MESON_CPU_FAMILY.mips64eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.mips64el +_IGN_VARS.meson+= MESON_CPU_FAMILY.mipseb +_IGN_VARS.meson+= MESON_CPU_FAMILY.mipsel +_IGN_VARS.meson+= MESON_CPU_FAMILY.powerpc +_IGN_VARS.meson+= MESON_CPU_FAMILY.powerpc64 +_IGN_VARS.meson+= MESON_CPU_FAMILY.sh3eb +_IGN_VARS.meson+= MESON_CPU_FAMILY.sh3el +_IGN_VARS.meson+= MESON_CROSS.sys_root +_IGN_VARS.meson+= MESON_CROSS_ARGS +_IGN_VARS.meson+= MESON_CROSS_FILE _LISTED_VARS.meson= *_ARGS *_DEPENDS _SORTED_VARS.meson= *_ENV diff --git a/devel/ncurses/Makefile.common b/devel/ncurses/Makefile.common index 85a44b05fb95..fa5971e46ad3 100644 --- a/devel/ncurses/Makefile.common +++ b/devel/ncurses/Makefile.common @@ -51,7 +51,8 @@ CONFIGURE_ARGS.Darwin+= --disable-mixed-case .if ${USE_CROSS_COMPILE:U:tl} == yes TOOL_DEPENDS+= ncurses-${NC_VERS}:../../devel/ncurses CONFIGURE_ENV+= BUILD_CC=${NATIVE_CC:Q} -CONFIGURE_ENV+= ac_cv_path_TIC_PATH=${PREFIX}/bin/tic +CONFIGURE_ENV+= ac_cv_path_TIC_PATH=${TOOLBASE:Q}/bin/tic +ALL_ENV+= TIC_PATH=${TOOLBASE:Q}/bin/tic .endif # If there's no native tbl(1) then the tools infrastructure would pull in diff --git a/devel/ncurses/builtin.mk b/devel/ncurses/builtin.mk index 3a095ce04329..202bdd699ec2 100644 --- a/devel/ncurses/builtin.mk +++ b/devel/ncurses/builtin.mk @@ -47,7 +47,7 @@ BUILTIN_VERSION.ncurses!= \ gsub("\"", "", vers); \ print vers; \ } \ - ' ${H_NCURSES:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_NCURSES:Q} BUILTIN_PKG.ncurses= ncurses-${BUILTIN_VERSION.ncurses} .endif MAKEVARS+= BUILTIN_PKG.ncurses diff --git a/devel/ncursesw/builtin.mk b/devel/ncursesw/builtin.mk index 6d5f9abc6b07..344b7f05e177 100644 --- a/devel/ncursesw/builtin.mk +++ b/devel/ncursesw/builtin.mk @@ -44,7 +44,7 @@ BUILTIN_VERSION.ncursesw!= \ gsub("\"", "", vers); \ print vers; \ } \ - ' ${H_NCURSESW:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_NCURSESW:Q} BUILTIN_PKG.ncursesw= ncursesw-${BUILTIN_VERSION.ncursesw} .endif MAKEVARS+= BUILTIN_PKG.ncursesw diff --git a/devel/readline/builtin.mk b/devel/readline/builtin.mk index a0f76cda2f21..031bdcfd94f7 100644 --- a/devel/readline/builtin.mk +++ b/devel/readline/builtin.mk @@ -35,7 +35,7 @@ BUILTIN_VERSION.readline!= \ ${AWK} '/\#define[ ]*RL_VERSION_MAJOR/ { M = $$3 } \ /\#define[ ]*RL_VERSION_MINOR/ { m = "."$$3 } \ END { printf "%s%s\n", M, m } \ - ' ${H_READLINE:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_READLINE:Q} BUILTIN_PKG.readline= readline-${BUILTIN_VERSION.readline} .endif MAKEVARS+= BUILTIN_PKG.readline diff --git a/devel/zlib/builtin.mk b/devel/zlib/builtin.mk index 339af7a13786..4d63e7b908e0 100644 --- a/devel/zlib/builtin.mk +++ b/devel/zlib/builtin.mk @@ -36,7 +36,7 @@ BUILTIN_VERSION.zlib!= \ gsub("\"", "", vers); \ print vers; \ } \ - ' ${H_ZLIB:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_ZLIB:Q} BUILTIN_PKG.zlib= zlib-${BUILTIN_VERSION.zlib:C/-[A-Za-z]*//} .endif diff --git a/doc/HOWTO-dev-crosscompile b/doc/HOWTO-dev-crosscompile index e1cbd3c57f69..1de740a04eee 100644 --- a/doc/HOWTO-dev-crosscompile +++ b/doc/HOWTO-dev-crosscompile @@ -11,34 +11,42 @@ have ever thought of cross-compilation. * Native and target platform -When building a package, MACHINE_ARCH, MACHINE_GNU_PLATFORM, &c., -describe the platform for which the package is being built. If +When building a package, MACHINE_ARCH, OPSYS, &c., describe the +platform for which the package is being built. If USE_CROSS_COMPILE=no, this is the native platform; otherwise, if -USE_CROSS_COMPILE=yes, it is the target platform, and the additional -variables NATIVE_MACHINE_ARCH, NATIVE_MACHINE_GNU_PLATFORM, &c., -describe the native platform. +USE_CROSS_COMPILE=yes, it is the target platform. The additional +variables NATIVE_MACHINE_ARCH, NATIVE_OPSYS, &c., always describe the +native platform. When building a native package for cross-compilation, such as a -compiler for the target, the variable TARGET_ARCH describes the target -platform like MACHINE_ARCH. If the build product varies with the -choice of target, then TARGET_ARCH should be embedded into the PKGNAME +compiler for the target, the variables TARGET_MACHINE_ARCH, +TARGET_OPSYS, &c., describe the target platform. If the build product +varies with the choice of target, then TARGET_MACHINE_ARCH or +TARGET_OPSYS or whatever affects it should be embedded into the PKGNAME somewhere so that the different build products are distinguished by having different package names. -XXX This pattern is incompletely realized. We should probably replace -TARGET_ARCH by TARGET_MACHINE_ARCH, TARGET_MACHINE_GNU_PLATFORM, &c., -and perhaps decide which of those is the main switch that you set when -you want to select cross-compilation. Ideally, this switch should -also support cross-compilation to other operating systems. +XXX Missing: +XXX - TARGET_MACHINE_GNU_PLATFORM +XXX - TARGET_MACHINE_GNU_ARCH +XXX - probably other variables defined in terms of the CROSSVARS * Specifying the toolchain -Software built following GNU conventions can set GNU_CONFIGURE=yes so -that pkgsrc will automatically specify the right --build, --host, and ---target options for cross-compilation and point everything at the -right toolchain. +The following build systems should automagically handle +cross-compilation by passing through the architecture and OS +information: -XXX And software not built following GNU conventions...? +- GNU_CONFIGURE=yes +- .include "../../devel/meson/build.mk" (sets +- .include "../../devel/cmake/build.mk" (and legacy USE_CMAKE=yes) + +Additional tweaks are sometimes needed (but not always), conditional on +${USE_CROSS_COMPILE:tl} == "yes" (after including bsd.prefs.mk): + +- (pkg-config) ALL_ENV+= PKG_CONFIG_SYSROOT_DIR=${CROSS_DESTDIR:Q} +- (pkg-config) ALL_ENV+= PKG_CONFIG_FDO_SYSROOT_RULES=1 +- (cmake) CMAKE_ARGS+= -DCMAKE_SYSROOT:STRING=${CROSS_DESTDIR:Q} * Tool dependencies @@ -107,7 +115,7 @@ pre-answer the tests for autoconf: .include "../../bsd.prefs.mk" -.if ${USE_CROSS_COMPILE:U:tl} == "yes" +.if ${USE_CROSS_COMPILE:tl} == "yes" # Configure wants to check for /dev/random but can't. We know NetBSD # always has a /dev/random, so inform autoconf of the fact. CONFIGURE_ENV.NetBSD+= ac_cv_file__dev_random=yes diff --git a/doc/HOWTO-use-crosscompile b/doc/HOWTO-use-crosscompile index c2f7fe7c659f..d9800c7255b6 100644 --- a/doc/HOWTO-use-crosscompile +++ b/doc/HOWTO-use-crosscompile @@ -34,41 +34,51 @@ running NetBSD 6.1 on amd64. In addition to whatever else you want in your mk.conf for pkgsrc, add: - # Cross-compile by default. + # Cross-compile by default. (Alternatively, you can cross-build + # packages with `make package USE_CROSS_COMPILE=no'.) # - # XXX This currently can't be set to `yes' on the command line, - # which is a bug. + # Note: This must use `?=' so it doesn't override pkgsrc's internal + # USE_CROSS_COMPILE=no when recursively building toolchain packages + # that have to run on the host. USE_CROSS_COMPILE?= yes - # Point pkgsrc at the NetBSD tooldir and destdir. These are used - # only for cross-builds. - # - # XXX There is no obvious variable that is set to amd64 so that we - # could use - # - # TOOLDIR= /usr/obj/tooldir.${OPSYS}-${OS_VERSION}-${NATIVE_xyz} - # - # MACHINE is amd64 but, since it's not NATIVE_xyz, it's wrong. - # NATIVE_MACHINE_ARCH is x86_64, not amd64. + # Point pkgsrc at the NetBSD tooldir and destdir for cross builds. TOOLDIR= /usr/obj/tooldir.NetBSD-6.1-amd64 CROSS_DESTDIR= /usr/obj/destdir.evbppc # Specify the machine architecture of target packages. - # - # XXX This currently can't be set on the command line, which is a - # bug. - .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) - MACHINE_ARCH= powerpc - .endif - -Optionally, you can set CROSS_LOCALBASE for cross-compiled packages -separately from LOCALBASE for natively compiled packages. For example, + CROSS_MACHINE_ARCH= powerpc + + # Specify the OS of target packages. + CROSS_OPSYS= NetBSD + CROSS_OS_VERSION= 10.0 + CROSS_OPSYS_VERSION= 100000 + CROSS_LOWER_OPSYS= netbsd + CROSS_LOWER_OPSYS_VERSUFFIX= # empty + CROSS_LOWER_OS_VARIANT= # empty + CROSS_LOWER_VARIANT_VERSION= # empty + CROSS_LOWER_VENDOR= # empty + +Optionally, you can set CROSS_LOCALBASE, CROSS_SYSCONFBASE, and +CROSS_VARBASE for cross-compiled packages separately from LOCALBASE, +SYSCONFBASE, and VARBASE for natively compiled packages. For example, you can use an unprivileged pkgsrc build into /home/user/cross/pkg that will create packages which install to /opt/pkg: LOCALBASE= /home/user/cross/pkg CROSS_LOCALBASE= /opt/pkg +By default, pkgsrc will assume: + + CROSS_LOCALBASE= /usr/pkg + CROSS_SYSCONFBASE= /etc + CROSS_VARBASE= /var + +That is, no matter what you set LOCALBASE, SYSCONFBASE, and VARBASE to +in mk.conf for native packages, like directores under /home/user, by +default cross-compiled packages will see LOCALBASE=/usr/pkg, +SYSCONFBASE=/etc, and VARBASE=/var. + ** Bootstrapped pkgsrc You can bootstrap pkgsrc or not; it shouldn't make a difference for @@ -83,7 +93,7 @@ cross-compilation. If you do: be left empty or undefined for earmv7hf cross-builds. So you might need: - .if empty(USE_CROSS_COMPILE:M[yY][eE][sS]) + .if ${USE_CROSS_COMPILE:tl} != "yes" ABI= 64 # set for native amd64 build .else ABI= # empty for earmv7hf cross-build @@ -105,10 +115,6 @@ build a native package, you can run $ cd /usr/pkgsrc/net/isc-dhcpd4 && make package USE_CROSS_COMPILE=no -XXX Note that currently you cannot omit USE_CROSS_COMPILE?=yes from -your mk.conf and pass USE_CROSS_COMPILE=yes on the make command line. -This is a bug. - * Unprivileged notes I do all this stuff unprivileged in directories under my home diff --git a/fonts/Xft2/builtin.mk b/fonts/Xft2/builtin.mk index cc222eafbfd2..dd0b166e2564 100644 --- a/fonts/Xft2/builtin.mk +++ b/fonts/Xft2/builtin.mk @@ -37,7 +37,7 @@ BUILTIN_VERSION.Xft2!= \ /\#define[ ]*XFT_MINOR/ { m = "."$$3 } \ /\#define[ ]*XFT_REVISION/ { r = "."$$3 } \ END { printf "%s%s%s\n", M, m, r }' \ - ${H_XFT2} + ${_CROSS_DESTDIR:U:Q}${H_XFT2:Q} BUILTIN_PKG.Xft2= Xft2-${BUILTIN_VERSION.Xft2} .endif MAKEVARS+= BUILTIN_PKG.Xft2 diff --git a/fonts/fontconfig/builtin.mk b/fonts/fontconfig/builtin.mk index 0c329f0bbc5e..d9aa48f00394 100644 --- a/fonts/fontconfig/builtin.mk +++ b/fonts/fontconfig/builtin.mk @@ -33,7 +33,7 @@ BUILTIN_VERSION.fontconfig!= \ /\#define[ ]*FC_MINOR/ { m = "."$$3 } \ /\#define[ ]*FC_REVISION/ { r = "."$$3 } \ END { printf "%s%s%s\n", M, m, r }' \ - ${H_FONTCONFIG} + ${_CROSS_DESTDIR:U:Q}${H_FONTCONFIG:Q} BUILTIN_PKG.fontconfig= fontconfig-${BUILTIN_VERSION.fontconfig} .endif MAKEVARS+= BUILTIN_PKG.fontconfig diff --git a/graphics/MesaLib/Makefile b/graphics/MesaLib/Makefile index b83f5c7c33d8..245c4da2a9c7 100644 --- a/graphics/MesaLib/Makefile +++ b/graphics/MesaLib/Makefile @@ -176,6 +176,14 @@ PKGCONFIG_OVERRIDE+= output/meson-private/osmesa.pc PKGCONFIG_OVERRIDE+= output/meson-private/xatracker.pc PKGCONFIG_OVERRIDE+= output/meson-private/gl.pc +.include "../../mk/bsd.prefs.mk" + +.if ${USE_CROSS_COMPILE:tl} == "yes" +# wayland-protocols abuses pc_sysrootdir in its .pc files, causing the +# cross-destdir to be prefixed twice to paths. +ALL_ENV+= PKG_CONFIG_FDO_SYSROOT_RULES=1 +.endif + post-install: ${MV} ${DESTDIR}${PREFIX}/share/drirc.d/00-mesa-defaults.conf ${DESTDIR}${EGDIR} .if ${OPSYS} == "Darwin" diff --git a/graphics/MesaLib/builtin.mk b/graphics/MesaLib/builtin.mk index b2c566d8e0c8..44f2654c1eb7 100644 --- a/graphics/MesaLib/builtin.mk +++ b/graphics/MesaLib/builtin.mk @@ -32,7 +32,8 @@ MAKEVARS+= IS_BUILTIN.MesaLib .if !defined(BUILTIN_PKG.MesaLib) && \ !empty(IS_BUILTIN.MesaLib:M[yY][eE][sS]) . if empty(PC_GL:M__nonexistent__) -BUILTIN_VERSION.Mesa!= ${SED} -n -e 's/Version: //p' ${PC_GL} +BUILTIN_VERSION.Mesa!= \ + ${SED} -n -e 's/Version: //p' ${_CROSS_DESTDIR:U:Q}${PC_GL:Q} . elif empty(H_MESALIB:M__nonexistent__) . include "version.mk" . else # ? diff --git a/graphics/MesaLib/distinfo b/graphics/MesaLib/distinfo index 42386fa71f7b..c55b00dd6d2d 100644 --- a/graphics/MesaLib/distinfo +++ b/graphics/MesaLib/distinfo @@ -3,6 +3,8 @@ $NetBSD: distinfo,v 1.166 2023/07/18 19:33:31 ryoon Exp $ BLAKE2s (mesa-21.3.9.tar.xz) = e948a37881a088c0df4df880e3d1218b874ed5a8cac951a109249b3648519472 SHA512 (mesa-21.3.9.tar.xz) = 4cec6f4f50f444fcd327f7c40f8899c2f265e348e121455262b540b1f890a1468bbea59965af0876c548fa97aa0a05a1b23fa6ca7d308bd60328cfdeab757684 Size (mesa-21.3.9.tar.xz) = 16607716 bytes +SHA1 (patch-meson.build) = acdbb73bde03a297a7c080c33edb317c8d838adc +SHA1 (patch-meson__options.txt) = af1cb551056b0f85cf12d1226b8cea368b0284de SHA1 (patch-src_compiler_builtin__type__macros.h) = e4868011711fb89a293580a12eb603b8e7162336 SHA1 (patch-src_drm-shim_drm__shim.c) = 6884d31dc3e9d47aac1785589ab289a601e64545 SHA1 (patch-src_egl_drivers_dri2_platform__drm.c) = 9230fbae2c04246ebca8437ecad694bbae857fbe diff --git a/graphics/MesaLib/options.mk b/graphics/MesaLib/options.mk index 746a6a01cb5d..5668212b82b0 100644 --- a/graphics/MesaLib/options.mk +++ b/graphics/MesaLib/options.mk @@ -81,6 +81,32 @@ GALLIUM_DRIVERS+= r600 PLIST.radeonsi= yes GALLIUM_DRIVERS+= radeonsi . endif + +. if ${USE_CROSS_COMPILE:tl} == "yes" +# XXX whattakludge +LIBLLVM_COMPONENTS= aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets amdgpu amdgpuasmparser amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter avr avrasmparser avrcodegen avrdesc avrdisassembler avrinfo binaryformat bitreader bitstreamreader bitwriter bpf bpfasmparser bpfcodegen bpfdesc bpfdisassembler bpfinfo cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker dwp engine executionengine extensions filecheck frontendopenacc frontendopenmp fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interfacestub interpreter ipo irreader jitlink lanai lanaiasmparser lanaicodegen lanaidesc lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit orcshared orctargetprocess passes powerpc powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo runtimedyld scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo webassemblyutils windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info xcore xcorecodegen xcoredesc xcoredisassembler xcoreinfo xray +MESON_CROSS_BINARIES+= llvm-config +MESON_CROSS_BINARY.llvm-config= ${TOOLS_DIR}/bin/llvm-config +TOOLS_CREATE+= llvm-config +TOOLS_SCRIPT.llvm-config= \ + while [ $$\# -gt 0 ]; do \ + case $$1 in \ + --components) echo ${LIBLLVM_COMPONENTS};; \ + --cppflags) echo -I${BUILDLINK_PREFIX.libLLVM:Q}/include;; \ + --has-rtti) echo YES;; \ + --libdir) echo ${BUILDLINK_PREFIX.libLLVM:Q}/lib;; \ + --ldflags) echo -L${BUILDLINK_PREFIX.libLLVM:Q}/lib \ + ${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.libLLVM:Q}/lib;; \ + --libs) echo -lLLVM-13;; \ + --link-shared) ;; \ + --shared-mode) echo shared;; \ + --version) echo 13.0.2;; \ + --*) echo unknown option; exit 1;; \ + esac; \ + shift; \ + done +. endif + .else MESON_ARGS+= -Dllvm=disabled .endif @@ -140,6 +166,7 @@ MESON_ARGS+= -Dgallium-vdpau=false # .if !empty(PKG_OPTIONS:Mwayland) MESA_PLATFORMS+= wayland +TOOL_DEPENDS+= ${BUILDLINK_API_DEPENDS.wayland:=:../../devel/wayland} . include "../../devel/wayland/buildlink3.mk" . include "../../devel/wayland-protocols/buildlink3.mk" .endif diff --git a/graphics/MesaLib/patches/patch-meson.build b/graphics/MesaLib/patches/patch-meson.build new file mode 100644 index 000000000000..f4830c302d55 --- /dev/null +++ b/graphics/MesaLib/patches/patch-meson.build @@ -0,0 +1,19 @@ +$NetBSD$ + +Add a wayland-scanner option so we can pass the path through from the +Makefile for cross-builds. + +--- meson.build.orig 2022-06-08 18:13:35.000000000 +0000 ++++ meson.build +@@ -2004,7 +2004,11 @@ endif + + if with_platform_wayland + dep_wl_scanner = dependency('wayland-scanner', native: true) ++ if meson.is_cross_build() ++ prog_wl_scanner = find_program(get_option('wayland-scanner')) ++ else + prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner')) ++ endif + if dep_wl_scanner.version().version_compare('>= 1.15') + wl_scanner_arg = 'private-code' + else diff --git a/graphics/MesaLib/patches/patch-meson__options.txt b/graphics/MesaLib/patches/patch-meson__options.txt new file mode 100644 index 000000000000..e06c683047fd --- /dev/null +++ b/graphics/MesaLib/patches/patch-meson__options.txt @@ -0,0 +1,17 @@ +$NetBSD$ + +Add a wayland-scanner option so we can pass the path through from the +Makefile for cross-builds. + +--- meson_options.txt.orig 2022-06-08 18:13:35.000000000 +0000 ++++ meson_options.txt +@@ -539,3 +539,9 @@ option( + value : false, + description : 'Configure LTS build to coexist with Mesa >= 22.0' + ) ++option( ++ 'wayland-scanner', ++ type : 'string', ++ value : 'wayland-scanner', ++ description : 'Path to build-time wayland-scanner binary' ++) diff --git a/graphics/MesaLib/version.mk b/graphics/MesaLib/version.mk index 7f8b9ab5ddd2..f014dff45a76 100644 --- a/graphics/MesaLib/version.mk +++ b/graphics/MesaLib/version.mk @@ -25,6 +25,6 @@ BUILTIN_VERSION.Mesa!= \ /\#define[ ]*GL_VERSION_1_4/ { v = "5.0" } \ /\#define[ ]*GL_VERSION_1_5/ { v = "6.0" } \ END { printf "%s\n", v }' \ - ${H_MESA} + ${_CROSS_DESTDIR:U:Q}${H_MESA:Q} .endif MAKEVARS+= BUILTIN_VERSION.Mesa diff --git a/graphics/freetype2/builtin.mk b/graphics/freetype2/builtin.mk index 744b9ac74688..03332c1a8acb 100644 --- a/graphics/freetype2/builtin.mk +++ b/graphics/freetype2/builtin.mk @@ -37,7 +37,7 @@ BUILTIN_VERSION.freetype2!= \ /\#define[ ]*FREETYPE_MINOR/ { m = "."$$3 } \ /\#define[ ]*FREETYPE_PATCH/ { p = "."$$3 } \ END { printf "%s%s%s\n", M, m, p }' \ - ${H_FREETYPE2} + ${_CROSS_DESTDIR:U:Q}${H_FREETYPE2:Q} BUILTIN_PKG.freetype2= freetype2-${BUILTIN_VERSION.freetype2} .endif MAKEVARS+= BUILTIN_PKG.freetype2 diff --git a/graphics/glu/builtin.mk b/graphics/glu/builtin.mk index 0438cde7ef5a..e8fbbf8ea0cb 100644 --- a/graphics/glu/builtin.mk +++ b/graphics/glu/builtin.mk @@ -30,7 +30,8 @@ MAKEVARS+= IS_BUILTIN.glu .if !defined(BUILTIN_PKG.glu) && \ ${IS_BUILTIN.glu:tl} == yes . if empty(PC_GLU:M__nonexistent__) -BUILTIN_VERSION.Mesa!= ${SED} -n -e 's/Version: //p' ${PC_GLU} +BUILTIN_VERSION.Mesa!= \ + ${SED} -n -e 's/Version: //p' ${_CROSS_DESTDIR:U:Q}${PC_GLU:Q} . elif empty(H_GLU:M__nonexistent__) . include "../../graphics/MesaLib/version.mk" . else # ? diff --git a/lang/openjdk8/builtin.mk b/lang/openjdk8/builtin.mk index 27e67ad3875f..c895f6c3106e 100644 --- a/lang/openjdk8/builtin.mk +++ b/lang/openjdk8/builtin.mk @@ -26,7 +26,12 @@ MAKEVARS+= IS_BUILTIN.openjdk8 ### If there is a built-in implementation, then set BUILTIN_PKG. to ### a package name to represent the built-in package. ### -.if !defined(BUILTIN_PKG.openjdk8) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.openjdk8) && \ ${IS_BUILTIN.openjdk8:tl} == yes BUILTIN_VERSION.openjdk8!= ${OJDK8} -version 2>&1 | ${SED} -Ee 's:^[^0-9]*([0-9._]+)$$:\1:' -e 's/_/./g' -e 's/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/\1.\2.\4/' BUILTIN_PKG.openjdk8= openjdk8-${BUILTIN_VERSION.openjdk8} diff --git a/lang/oracle-jdk8/builtin.mk b/lang/oracle-jdk8/builtin.mk index f6aa23a49354..8641613a564d 100644 --- a/lang/oracle-jdk8/builtin.mk +++ b/lang/oracle-jdk8/builtin.mk @@ -44,7 +44,12 @@ MAKEVARS+= IS_BUILTIN.oracle-jdk8 ### If there is a built-in implementation, then set BUILTIN_PKG. to ### a package name to represent the built-in package. ### -.if !defined(BUILTIN_PKG.oracle-jdk8) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.oracle-jdk8) && \ !empty(IS_BUILTIN.oracle-jdk8:M[yY][eE][sS]) && \ empty(JDK8:M__nonexistent__) diff --git a/lang/oracle-jre8/builtin.mk b/lang/oracle-jre8/builtin.mk index 8d169ccacd48..96fec6b1d7d8 100644 --- a/lang/oracle-jre8/builtin.mk +++ b/lang/oracle-jre8/builtin.mk @@ -44,7 +44,12 @@ MAKEVARS+= IS_BUILTIN.oracle-jre8 ### If there is a built-in implementation, then set BUILTIN_PKG. to ### a package name to represent the built-in package. ### -.if !defined(BUILTIN_PKG.oracle-jre8) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.oracle-jre8) && \ !empty(IS_BUILTIN.oracle-jre8:M[yY][eE][sS]) && \ empty(JAVAVM8:M__nonexistent__) diff --git a/lang/python310/Makefile b/lang/python310/Makefile index 24fc900bdfeb..2c26da9dabda 100644 --- a/lang/python310/Makefile +++ b/lang/python310/Makefile @@ -38,6 +38,7 @@ USE_TOOLS+= pkg-config GNU_CONFIGURE= yes CONFIGURE_ARGS+= --enable-shared CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl} +CONFIGURE_ARGS+= --with-readline=readline # XXX editline? CONFIGURE_ARGS+= --with-system-expat CONFIGURE_ARGS+= --with-system-ffi CONFIGURE_ARGS+= --without-ensurepip @@ -73,6 +74,9 @@ ALL_ENV+= \ _PYTHON_PROJECT_BASE=${WRKSRC:Q} ALL_ENV+= \ _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_${PY_PLATNAME:Q} +. if ${MACHINE_ARCH} == "vax" +CONFIGURE_ENV+= ax_cv_c_float_words_bigendian=no +. endif .endif # http://bugs.python.org/issue13241 diff --git a/lang/python310/distinfo b/lang/python310/distinfo index 8249c2ca3aa3..44d74dcd22ec 100644 --- a/lang/python310/distinfo +++ b/lang/python310/distinfo @@ -16,4 +16,4 @@ SHA1 (patch-Modules_socketmodule.h) = 8761c7238bc74e45adefb6e647dc3b39b7bdd81c SHA1 (patch-Python_thread__pthread.h) = b8efa178380fe48da4a0bf2bfa906851a314824e SHA1 (patch-configure) = 8ffe98e51407d10e46e7d1531f2e0e0b58e1cfa6 SHA1 (patch-pyconfig.h.in) = 1ab77914315acbf0352d242ed66200bea54548f6 -SHA1 (patch-setup.py) = 5ab776a53ad361fdea9004817a7157743ab42db7 +SHA1 (patch-setup.py) = 5d1907202ad38286b92f41a553f34cf87c965213 diff --git a/lang/python310/patches/patch-setup.py b/lang/python310/patches/patch-setup.py index 472f797d4b73..21e036837c84 100644 --- a/lang/python310/patches/patch-setup.py +++ b/lang/python310/patches/patch-setup.py @@ -7,8 +7,11 @@ which will get transformed to panel in buildlink. Don't search for modules in PREFIX. Fixes build failure when py-setuptools are installed. Enable cross-build by setting sys._home and sys.path to build directory +Disable circuitous readline detection which tries to outsmart pkgsrc's +static choice of libreadline and (fake-)ncurses and trips over its elven +shoelaces when cross-compiling. ---- setup.py.orig 2022-03-23 20:12:04.000000000 +0000 +--- setup.py.orig 2023-08-24 12:46:25.000000000 +0000 +++ setup.py @@ -1,5 +1,11 @@ # Autodetecting setup.py script for building the Python extensions @@ -64,7 +67,7 @@ Enable cross-build by setting sys._home and sys.path to build directory def find_file(filename, std_dirs, paths): """Searches for the directory where a given file is located, and returns a possibly-empty list of additional directories, or None -@@ -823,15 +841,15 @@ class PyBuildExt(build_ext): +@@ -822,15 +840,15 @@ class PyBuildExt(build_ext): add_dir_to_list(dir_list, directory) def configure_compiler(self): @@ -89,7 +92,7 @@ Enable cross-build by setting sys._home and sys.path to build directory self.add_multiarch_paths() self.add_ldflags_cppflags() -@@ -879,6 +897,9 @@ class PyBuildExt(build_ext): +@@ -878,6 +896,9 @@ class PyBuildExt(build_ext): self.lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] if MACOS: @@ -99,16 +102,82 @@ Enable cross-build by setting sys._home and sys.path to build directory # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here. -@@ -1106,8 +1127,6 @@ class PyBuildExt(build_ext): - # use the same library for the readline and curses modules. - if 'curses' in readline_termcap_library: - curses_library = readline_termcap_library +@@ -1067,71 +1088,10 @@ class PyBuildExt(build_ext): + def detect_readline_curses(self): + # readline + readline_termcap_library = "" +- curses_library = "" +- # Cannot use os.popen here in py3k. +- tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib') +- if not os.path.exists(self.build_temp): +- os.makedirs(self.build_temp) +- # Determine if readline is already linked against curses or tinfo. +- if sysconfig.get_config_var('HAVE_LIBREADLINE'): +- if sysconfig.get_config_var('WITH_EDITLINE'): +- readline_lib = 'edit' +- else: +- readline_lib = 'readline' +- do_readline = self.compiler.find_library_file(self.lib_dirs, +- readline_lib) +- if CROSS_COMPILING: +- ret = run_command("%s -d %s | grep '(NEEDED)' > %s" +- % (sysconfig.get_config_var('READELF'), +- do_readline, tmpfile)) +- elif find_executable('ldd'): +- ret = run_command("ldd %s > %s" % (do_readline, tmpfile)) +- else: +- ret = 1 +- if ret == 0: +- with open(tmpfile) as fp: +- for ln in fp: +- if 'curses' in ln: +- readline_termcap_library = re.sub( +- r'.*lib(n?cursesw?)\.so.*', r'\1', ln +- ).rstrip() +- break +- # termcap interface split out from ncurses +- if 'tinfo' in ln: +- readline_termcap_library = 'tinfo' +- break +- if os.path.exists(tmpfile): +- os.unlink(tmpfile) +- else: +- do_readline = False +- # Issue 7384: If readline is already linked against curses, +- # use the same library for the readline and curses modules. +- if 'curses' in readline_termcap_library: +- curses_library = readline_termcap_library - elif self.compiler.find_library_file(self.lib_dirs, 'ncursesw'): - curses_library = 'ncursesw' - # Issue 36210: OSS provided ncurses does not link on AIX - # Use IBM supplied 'curses' for successful build of _curses - elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): -@@ -1211,8 +1230,7 @@ class PyBuildExt(build_ext): +- # Issue 36210: OSS provided ncurses does not link on AIX +- # Use IBM supplied 'curses' for successful build of _curses +- elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' +- elif self.compiler.find_library_file(self.lib_dirs, 'ncurses'): +- curses_library = 'ncurses' +- elif self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' ++ curses_library = "ncurses" ++ do_readline = True ++ readline_lib = 'readline' + +- if MACOS: +- os_release = int(os.uname()[2].split('.')[0]) +- dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') +- if (dep_target and +- (tuple(int(n) for n in dep_target.split('.')[0:2]) +- < (10, 5) ) ): +- os_release = 8 +- if os_release < 9: +- # MacOSX 10.4 has a broken readline. Don't try to build +- # the readline module unless the user has installed a fixed +- # readline package +- if find_file('readline/rlconf.h', self.inc_dirs, []) is None: +- do_readline = False + if do_readline: + if MACOS and os_release < 9: + # In every directory on the search path search for a dynamic +@@ -1213,8 +1173,7 @@ class PyBuildExt(build_ext): # If the curses module is enabled, check for the panel module # _curses_panel needs some form of ncurses skip_curses_panel = True if AIX else False @@ -118,7 +187,7 @@ Enable cross-build by setting sys._home and sys.path to build directory self.add(Extension('_curses_panel', ['_curses_panel.c'], include_dirs=curses_includes, define_macros=curses_defines, -@@ -1457,6 +1475,31 @@ class PyBuildExt(build_ext): +@@ -1459,6 +1418,31 @@ class PyBuildExt(build_ext): dbm_order = ['gdbm'] # The standard Unix dbm module: if not CYGWIN: @@ -150,7 +219,7 @@ Enable cross-build by setting sys._home and sys.path to build directory config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] dbm_args = [arg for arg in config_args -@@ -1468,7 +1511,7 @@ class PyBuildExt(build_ext): +@@ -1470,7 +1454,7 @@ class PyBuildExt(build_ext): dbmext = None for cand in dbm_order: if cand == "ndbm": @@ -159,7 +228,7 @@ Enable cross-build by setting sys._home and sys.path to build directory # Some systems have -lndbm, others have -lgdbm_compat, # others don't have either if self.compiler.find_library_file(self.lib_dirs, -@@ -2328,10 +2371,7 @@ class PyBuildExt(build_ext): +@@ -2333,10 +2317,7 @@ class PyBuildExt(build_ext): sources = ['_decimal/_decimal.c'] depends = ['_decimal/docstrings.h'] else: @@ -171,7 +240,7 @@ Enable cross-build by setting sys._home and sys.path to build directory libraries = ['m'] sources = [ '_decimal/_decimal.c', -@@ -2747,7 +2787,7 @@ def main(): +@@ -2752,7 +2733,7 @@ def main(): # If you change the scripts installed here, you also need to # check the PyBuildScripts command above, and change the links # created by the bininstall target in Makefile.pre.in diff --git a/lang/python311/Makefile b/lang/python311/Makefile index 223e6ad5e81a..6a3b73d73c9b 100644 --- a/lang/python311/Makefile +++ b/lang/python311/Makefile @@ -38,6 +38,7 @@ USE_CC_FEATURES+= c11 GNU_CONFIGURE= yes CONFIGURE_ARGS+= --enable-shared CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl} +CONFIGURE_ARGS+= --with-readline=readline # XXX editline? CONFIGURE_ARGS+= --with-system-expat CONFIGURE_ARGS+= --with-system-ffi CONFIGURE_ARGS+= --without-ensurepip diff --git a/lang/python311/distinfo b/lang/python311/distinfo index 5dfececde514..5702b9c519b2 100644 --- a/lang/python311/distinfo +++ b/lang/python311/distinfo @@ -10,4 +10,4 @@ SHA1 (patch-Lib_lib2to3_pgen2_driver.py) = 593c4e93c5653ab400f0a98b91db92630c0a7 SHA1 (patch-Lib_sysconfig.py) = bc6d91bf8f7121456b26ea7f080f588c96f2596f SHA1 (patch-Makefile.pre.in) = fdb5794d112f422a1f28aa9f8b179dc05520f9e1 SHA1 (patch-configure) = a6d9a00ff160581245bc30d1b0d2ec0e9da8fb0b -SHA1 (patch-setup.py) = a601ce207f5e61d15503c8781e925353d1e516b9 +SHA1 (patch-setup.py) = 874b114febf51181509593a272ad5cdd4acaf3b4 diff --git a/lang/python311/patches/patch-setup.py b/lang/python311/patches/patch-setup.py index b96ef2d2ac1e..809bf323e895 100644 --- a/lang/python311/patches/patch-setup.py +++ b/lang/python311/patches/patch-setup.py @@ -8,8 +8,11 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools are installed. Enable cross-build by setting sys._home and sys.path to build directory Module _crypt might need -lcrypt (taken from Python 3.10). +Disable circuitous readline detection which tries to outsmart pkgsrc's +static choice of libreadline and (fake-)ncurses and trips over its elven +shoelaces when cross-compiling. ---- setup.py.orig 2022-10-24 17:35:39.000000000 +0000 +--- setup.py.orig 2023-12-04 17:56:29.000000000 +0000 +++ setup.py @@ -1,5 +1,11 @@ # Autodetecting setup.py script for building the Python extensions @@ -100,16 +103,82 @@ Module _crypt might need -lcrypt (taken from Python 3.10). # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here. -@@ -1074,8 +1095,6 @@ class PyBuildExt(build_ext): - # use the same library for the readline and curses modules. - if 'curses' in readline_termcap_library: - curses_library = readline_termcap_library +@@ -1036,71 +1057,10 @@ class PyBuildExt(build_ext): + def detect_readline_curses(self): + # readline + readline_termcap_library = "" +- curses_library = "" +- # Cannot use os.popen here in py3k. +- tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib') +- if not os.path.exists(self.build_temp): +- os.makedirs(self.build_temp) +- # Determine if readline is already linked against curses or tinfo. +- if sysconfig.get_config_var('HAVE_LIBREADLINE'): +- if sysconfig.get_config_var('WITH_EDITLINE'): +- readline_lib = 'edit' +- else: +- readline_lib = 'readline' +- do_readline = self.compiler.find_library_file(self.lib_dirs, +- readline_lib) +- if CROSS_COMPILING: +- ret = run_command("%s -d %s | grep '(NEEDED)' > %s" +- % (sysconfig.get_config_var('READELF'), +- do_readline, tmpfile)) +- elif find_executable('ldd'): +- ret = run_command("ldd %s > %s" % (do_readline, tmpfile)) +- else: +- ret = 1 +- if ret == 0: +- with open(tmpfile) as fp: +- for ln in fp: +- if 'curses' in ln: +- readline_termcap_library = re.sub( +- r'.*lib(n?cursesw?)\.so.*', r'\1', ln +- ).rstrip() +- break +- # termcap interface split out from ncurses +- if 'tinfo' in ln: +- readline_termcap_library = 'tinfo' +- break +- if os.path.exists(tmpfile): +- os.unlink(tmpfile) +- else: +- do_readline = False +- # Issue 7384: If readline is already linked against curses, +- # use the same library for the readline and curses modules. +- if 'curses' in readline_termcap_library: +- curses_library = readline_termcap_library - elif self.compiler.find_library_file(self.lib_dirs, 'ncursesw'): - curses_library = 'ncursesw' - # Issue 36210: OSS provided ncurses does not link on AIX - # Use IBM supplied 'curses' for successful build of _curses - elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): -@@ -1166,8 +1185,7 @@ class PyBuildExt(build_ext): +- # Issue 36210: OSS provided ncurses does not link on AIX +- # Use IBM supplied 'curses' for successful build of _curses +- elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' +- elif self.compiler.find_library_file(self.lib_dirs, 'ncurses'): +- curses_library = 'ncurses' +- elif self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' ++ curses_library = "ncurses" ++ do_readline = True ++ readline_lib = 'readline' + +- if MACOS: +- os_release = int(os.uname()[2].split('.')[0]) +- dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') +- if (dep_target and +- (tuple(int(n) for n in dep_target.split('.')[0:2]) +- < (10, 5) ) ): +- os_release = 8 +- if os_release < 9: +- # MacOSX 10.4 has a broken readline. Don't try to build +- # the readline module unless the user has installed a fixed +- # readline package +- if find_file('readline/rlconf.h', self.inc_dirs, []) is None: +- do_readline = False + if do_readline: + readline_libs = [readline_lib] + if readline_termcap_library: +@@ -1169,8 +1129,7 @@ class PyBuildExt(build_ext): # If the curses module is enabled, check for the panel module # _curses_panel needs some form of ncurses skip_curses_panel = True if AIX else False @@ -119,7 +188,7 @@ Module _crypt might need -lcrypt (taken from Python 3.10). self.add(Extension('_curses_panel', ['_curses_panel.c'], include_dirs=curses_includes, define_macros=curses_defines, -@@ -1176,7 +1194,11 @@ class PyBuildExt(build_ext): +@@ -1179,7 +1138,11 @@ class PyBuildExt(build_ext): self.missing.append('_curses_panel') def detect_crypt(self): @@ -132,7 +201,7 @@ Module _crypt might need -lcrypt (taken from Python 3.10). def detect_dbm_gdbm(self): # Modules that provide persistent dictionary-like semantics. You will -@@ -1199,6 +1221,31 @@ class PyBuildExt(build_ext): +@@ -1202,6 +1165,31 @@ class PyBuildExt(build_ext): # The standard Unix dbm module: if not CYGWIN: @@ -164,7 +233,7 @@ Module _crypt might need -lcrypt (taken from Python 3.10). config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] dbm_args = [arg for arg in config_args -@@ -1616,7 +1663,7 @@ def main(): +@@ -1619,7 +1607,7 @@ def main(): # If you change the scripts installed here, you also need to # check the PyBuildScripts command above, and change the links # created by the bininstall target in Makefile.pre.in diff --git a/lang/python39/distinfo b/lang/python39/distinfo index f94ff9797453..32c3ca1e56cc 100644 --- a/lang/python39/distinfo +++ b/lang/python39/distinfo @@ -21,4 +21,4 @@ SHA1 (patch-Modules_socketmodule.h) = 8761c7238bc74e45adefb6e647dc3b39b7bdd81c SHA1 (patch-Python_thread__pthread.h) = 25609f722ac9c17a49023ddc6882545d9d7798ff SHA1 (patch-configure) = 944b8bb9601fd064333305778fb57997ce0ac531 SHA1 (patch-pyconfig.h.in) = 2f06af7358690b46eaff404226b898962b049a0e -SHA1 (patch-setup.py) = dab93079027f8ac6a259c9e683d35fe7b66c57e5 +SHA1 (patch-setup.py) = 185090e3497763ca271316b5ff4df7f1e72d1c14 diff --git a/lang/python39/patches/patch-setup.py b/lang/python39/patches/patch-setup.py index 0db7dad53f60..a4ef4635a9cc 100644 --- a/lang/python39/patches/patch-setup.py +++ b/lang/python39/patches/patch-setup.py @@ -7,8 +7,11 @@ which will get transformed to panel in buildlink. Don't search for modules in PREFIX. Fixes build failure when py-setuptools are installed. Enable cross-build by setting sys._home and sys.path to build directory +Disable circuitous readline detection which tries to outsmart pkgsrc's +static choice of libreadline and (fake-)ncurses and trips over its elven +shoelaces when cross-compiling. ---- setup.py.orig 2022-03-23 21:12:08.000000000 +0000 +--- setup.py.orig 2023-08-24 17:59:28.000000000 +0000 +++ setup.py @@ -1,5 +1,11 @@ # Autodetecting setup.py script for building the Python extensions @@ -100,16 +103,75 @@ Enable cross-build by setting sys._home and sys.path to build directory # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here. -@@ -1006,8 +1026,6 @@ class PyBuildExt(build_ext): - # use the same library for the readline and curses modules. - if 'curses' in readline_termcap_library: - curses_library = readline_termcap_library +@@ -971,65 +991,10 @@ class PyBuildExt(build_ext): + + def detect_readline_curses(self): + # readline +- do_readline = self.compiler.find_library_file(self.lib_dirs, 'readline') ++ do_readline = True + readline_termcap_library = "" +- curses_library = "" +- # Cannot use os.popen here in py3k. +- tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib') +- if not os.path.exists(self.build_temp): +- os.makedirs(self.build_temp) +- # Determine if readline is already linked against curses or tinfo. +- if do_readline: +- if CROSS_COMPILING: +- ret = run_command("%s -d %s | grep '(NEEDED)' > %s" +- % (sysconfig.get_config_var('READELF'), +- do_readline, tmpfile)) +- elif find_executable('ldd'): +- ret = run_command("ldd %s > %s" % (do_readline, tmpfile)) +- else: +- ret = 1 +- if ret == 0: +- with open(tmpfile) as fp: +- for ln in fp: +- if 'curses' in ln: +- readline_termcap_library = re.sub( +- r'.*lib(n?cursesw?)\.so.*', r'\1', ln +- ).rstrip() +- break +- # termcap interface split out from ncurses +- if 'tinfo' in ln: +- readline_termcap_library = 'tinfo' +- break +- if os.path.exists(tmpfile): +- os.unlink(tmpfile) +- # Issue 7384: If readline is already linked against curses, +- # use the same library for the readline and curses modules. +- if 'curses' in readline_termcap_library: +- curses_library = readline_termcap_library - elif self.compiler.find_library_file(self.lib_dirs, 'ncursesw'): - curses_library = 'ncursesw' - # Issue 36210: OSS provided ncurses does not link on AIX - # Use IBM supplied 'curses' for successful build of _curses - elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): -@@ -1109,8 +1127,7 @@ class PyBuildExt(build_ext): +- # Issue 36210: OSS provided ncurses does not link on AIX +- # Use IBM supplied 'curses' for successful build of _curses +- elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' +- elif self.compiler.find_library_file(self.lib_dirs, 'ncurses'): +- curses_library = 'ncurses' +- elif self.compiler.find_library_file(self.lib_dirs, 'curses'): +- curses_library = 'curses' ++ curses_library = "ncurses" + +- if MACOS: +- os_release = int(os.uname()[2].split('.')[0]) +- dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') +- if (dep_target and +- (tuple(int(n) for n in dep_target.split('.')[0:2]) +- < (10, 5) ) ): +- os_release = 8 +- if os_release < 9: +- # MacOSX 10.4 has a broken readline. Don't try to build +- # the readline module unless the user has installed a fixed +- # readline package +- if find_file('readline/rlconf.h', self.inc_dirs, []) is None: +- do_readline = False + if do_readline: + if MACOS and os_release < 9: + # In every directory on the search path search for a dynamic +@@ -1109,8 +1074,7 @@ class PyBuildExt(build_ext): # If the curses module is enabled, check for the panel module # _curses_panel needs some form of ncurses skip_curses_panel = True if AIX else False @@ -119,7 +181,7 @@ Enable cross-build by setting sys._home and sys.path to build directory self.add(Extension('_curses_panel', ['_curses_panel.c'], include_dirs=curses_includes, define_macros=curses_defines, -@@ -1361,6 +1378,31 @@ class PyBuildExt(build_ext): +@@ -1361,6 +1325,31 @@ class PyBuildExt(build_ext): dbm_order = ['gdbm'] # The standard Unix dbm module: if not CYGWIN: @@ -151,7 +213,7 @@ Enable cross-build by setting sys._home and sys.path to build directory config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] dbm_args = [arg for arg in config_args -@@ -1372,7 +1414,7 @@ class PyBuildExt(build_ext): +@@ -1372,7 +1361,7 @@ class PyBuildExt(build_ext): dbmext = None for cand in dbm_order: if cand == "ndbm": @@ -160,7 +222,7 @@ Enable cross-build by setting sys._home and sys.path to build directory # Some systems have -lndbm, others have -lgdbm_compat, # others don't have either if self.compiler.find_library_file(self.lib_dirs, -@@ -2209,10 +2251,7 @@ class PyBuildExt(build_ext): +@@ -2209,10 +2198,7 @@ class PyBuildExt(build_ext): sources = ['_decimal/_decimal.c'] depends = ['_decimal/docstrings.h'] else: @@ -172,7 +234,7 @@ Enable cross-build by setting sys._home and sys.path to build directory libraries = ['m'] sources = [ '_decimal/_decimal.c', -@@ -2597,7 +2636,7 @@ def main(): +@@ -2597,7 +2583,7 @@ def main(): # If you change the scripts installed here, you also need to # check the PyBuildScripts command above, and change the links # created by the bininstall target in Makefile.pre.in diff --git a/lang/rust/Makefile b/lang/rust/Makefile index fe7a8b3d4a54..5777b11871a2 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -706,7 +706,7 @@ DEPENDS+= libatomic-links>=0:../../devel/libatomic-links .endif TOOL_DEPENDS+= cmake-[0-9]*:../../devel/cmake -.include "../../devel/cmake/buildlink3.mk" + .include "../../devel/zlib/buildlink3.mk" .include "../../lang/python/tool.mk" .include "../../mk/bsd.pkg.mk" diff --git a/lang/sun-jdk7/builtin.mk b/lang/sun-jdk7/builtin.mk index 4bbc1625851b..b94a111dd850 100644 --- a/lang/sun-jdk7/builtin.mk +++ b/lang/sun-jdk7/builtin.mk @@ -44,7 +44,12 @@ MAKEVARS+= IS_BUILTIN.sun-jdk7 ### If there is a built-in implementation, then set BUILTIN_PKG. to ### a package name to represent the built-in package. ### -.if !defined(BUILTIN_PKG.sun-jdk7) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.sun-jdk7) && \ !empty(IS_BUILTIN.sun-jdk7:M[yY][eE][sS]) && \ empty(JDK7:M__nonexistent__) diff --git a/lang/sun-jre7/builtin.mk b/lang/sun-jre7/builtin.mk index 5c0f7f1f687e..9a1614def49e 100644 --- a/lang/sun-jre7/builtin.mk +++ b/lang/sun-jre7/builtin.mk @@ -44,7 +44,12 @@ MAKEVARS+= IS_BUILTIN.sun-jre7 ### If there is a built-in implementation, then set BUILTIN_PKG. to ### a package name to represent the built-in package. ### -.if !defined(BUILTIN_PKG.sun-jre7) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.sun-jre7) && \ !empty(IS_BUILTIN.sun-jre7:M[yY][eE][sS]) && \ empty(JAVAVM7:M__nonexistent__) diff --git a/math/mpfr/builtin.mk b/math/mpfr/builtin.mk index 29ffcd8fbf2c..459b192b2910 100644 --- a/math/mpfr/builtin.mk +++ b/math/mpfr/builtin.mk @@ -31,7 +31,8 @@ MAKEVARS+= IS_BUILTIN.mpfr .if !defined(BUILTIN_PKG.mpfr) && \ ${IS_BUILTIN.mpfr:tl} == yes && \ empty(H_MPFR:M__nonexistent__) -BUILTIN_VERSION.mpfr!= ${BUILTIN_VERSION_SCRIPT.mpfr} ${H_MPFR} +BUILTIN_VERSION.mpfr!= \ + ${BUILTIN_VERSION_SCRIPT.mpfr} ${_CROSS_DESTDIR:U:Q}${H_MPFR:Q} BUILTIN_PKG.mpfr= mpfr-${BUILTIN_VERSION.mpfr} .endif MAKEVARS+= BUILTIN_PKG.mpfr diff --git a/math/nickle/Makefile b/math/nickle/Makefile index fd89320ba45f..2c2ceed096d0 100644 --- a/math/nickle/Makefile +++ b/math/nickle/Makefile @@ -9,9 +9,17 @@ HOMEPAGE= https://nickle.org/ COMMENT= Desk calculator language LICENSE= mit +USE_TOOLS+= autoconf automake autoreconf +TOOL_DEPENDS+= autoconf-archive>=0:../../devel/autoconf-archive + +pre-configure: + @${STEP_MSG} Autoreconf for Makefile.am patch + ${RUN} cd ${WRKSRC} && autoreconf -fi + GNU_CONFIGURE= yes -CONFIGURE_ARGS+= --with-readline=${BUILDLINK_PREFIX.readline} +CONFIGURE_ARGS+= --with-readline=${BUILDLINK_PREFIX.editlinereadline} +CONFIGURE_ARGS+= CC_FOR_BUILD=${NATIVE_CC:Q:U${CC:Q}} # suppress detection of DOCBOOK CONFIGURE_ENV+= ac_cv_path_DOCBOOK2PDF= diff --git a/math/nickle/distinfo b/math/nickle/distinfo index 22954ab1ce3b..fcbe35c62057 100644 --- a/math/nickle/distinfo +++ b/math/nickle/distinfo @@ -3,3 +3,4 @@ $NetBSD: distinfo,v 1.26 2023/12/11 10:11:04 wiz Exp $ BLAKE2s (nickle-2.96.tar.gz) = 2d2e9c761307bbeec656f70ccb75696cc3d9b07375f7c2df1ec8d0d818b710b8 SHA512 (nickle-2.96.tar.gz) = 4d06eb2e62a7c6c322ff9b406cfff2f2e68d0ff0eb3c84240aced618b89aa2a6be8822d7ae4169dc3e42c94527fb587a6c5fd9739bde03098de9f86b2bf11e3a Size (nickle-2.96.tar.gz) = 2552972 bytes +SHA1 (patch-test_Makefile.am) = 7238760ee390f7b1d07f267beb1b222f2af9068e diff --git a/math/nickle/patches/patch-test_Makefile.am b/math/nickle/patches/patch-test_Makefile.am new file mode 100644 index 000000000000..abd46b38d529 --- /dev/null +++ b/math/nickle/patches/patch-test_Makefile.am @@ -0,0 +1,25 @@ +$NetBSD$ + +Fix cross-build again. noinst_PROGRAMS does not work for programs that +are executed at build-time. Maybe some day automake will sprout a +built-in way to do the right thing here, but so far it hasn't, to my +knowledge. + +--- test/Makefile.am.orig 2023-12-02 21:10:00.000000000 +0000 ++++ test/Makefile.am +@@ -38,11 +38,10 @@ EXTRA_DIST=$(check_SCRIPTS) math-tables. + + math.5c: $(TABLES) + +-noinst_PROGRAMS = math-tables +- +-math_tables_SOURCES = math-tables.c +- +-math_tables_LIBS = -lm ++math-tables$(BUILD_EXEEXT): math-tables.o ++ $(CC_FOR_BUILD) -o $@ $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) math-tables.o -lm ++math-tables.o: math-tables.c ++ $(CC_FOR_BUILD) -o $@ $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -c math-tables.c + + $(TABLES): math-tables$(BUILD_EXEEXT) + ./math-tables$(BUILD_EXEEXT) > $(TABLES) diff --git a/mk/bsd.pkg.use.mk b/mk/bsd.pkg.use.mk index 03ee7cbf1323..30728ebc4bf7 100644 --- a/mk/bsd.pkg.use.mk +++ b/mk/bsd.pkg.use.mk @@ -91,8 +91,8 @@ TOOL_DEPENDS+= libtool-fortran>=${_OPSYS_LIBTOOL_REQD:U${LIBTOOL_REQD}}:../../d . endif .else . if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) -PKG_LIBTOOL?= ${TOOLBASE}/cross-${TARGET_ARCH:U${MACHINE_ARCH}}/bin/libtool -PKG_SHLIBTOOL?= ${TOOLBASE}/cross-${TARGET_ARCH:U${MACHINE_ARCH}}/bin/shlibtool +PKG_LIBTOOL?= ${TOOLBASE}/cross-${TARGET_MACHINE_PLATFORM:U${MACHINE_PLATFORM}}/bin/libtool +PKG_SHLIBTOOL?= ${TOOLBASE}/cross-${TARGET_MACHINE_PLATFORM:U${MACHINE_PLATFORM}}/bin/shlibtool . else PKG_LIBTOOL?= ${TOOLBASE}/bin/libtool PKG_SHLIBTOOL?= ${TOOLBASE}/bin/shlibtool @@ -103,7 +103,7 @@ SHLIBTOOL?= ${WRAPPER_BINDIR}/shlibtool .if defined(USE_LIBTOOL) LIBTOOL_REQD?= 2.4.2nb9 .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) -TOOL_DEPENDS+= cross-libtool-base-${MACHINE_ARCH}>=${_OPSYS_LIBTOOL_REQD:U${LIBTOOL_REQD}}:../../cross/cross-libtool-base +TOOL_DEPENDS+= cross-libtool-base-${MACHINE_PLATFORM}>=${_OPSYS_LIBTOOL_REQD:U${LIBTOOL_REQD}}:../../cross/cross-libtool-base .else TOOL_DEPENDS+= libtool-base>=${_OPSYS_LIBTOOL_REQD:U${LIBTOOL_REQD}}:../../devel/libtool-base .endif diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk index e5aaada0a6c7..bd17a2e3e8f6 100644 --- a/mk/bsd.prefs.mk +++ b/mk/bsd.prefs.mk @@ -87,23 +87,23 @@ UNAME=/run/current-system/sw/bin/uname UNAME=echo Unknown .endif -.if !defined(OPSYS) -OPSYS:= ${:!${UNAME} -s!:S/-//g:S/\///g:C/^CYGWIN_.*$/Cygwin/} -MAKEFLAGS+= OPSYS=${OPSYS:Q} +.if !defined(NATIVE_OPSYS) +NATIVE_OPSYS:= ${:!${UNAME} -s!:S/-//g:S/\///g:C/^CYGWIN_.*$/Cygwin/} +MAKEFLAGS+= NATIVE_OPSYS=${NATIVE_OPSYS:Q} .endif # OS_VARIANT is used to differentiate operating systems which have a common # basis but offer contrasting environments, for example Linux distributions # or illumos forks. -OS_VARIANT?= # empty +NATIVE_OS_VARIANT?= # empty # The _CMD indirection allows code below to modify these values # without executing the commands at all. Later, recursed make # invocations will skip these blocks entirely thanks to MAKEFLAGS. -.if !defined(OS_VERSION) -_OS_VERSION_CMD= ${UNAME} -r -OS_VERSION= ${_OS_VERSION_CMD:sh} -MAKEFLAGS+= OS_VERSION=${OS_VERSION:Q} +.if !defined(NATIVE_OS_VERSION) +_NATIVE_OS_VERSION_CMD= ${UNAME} -r +NATIVE_OS_VERSION= ${_NATIVE_OS_VERSION_CMD:sh} +MAKEFLAGS+= NATIVE_OS_VERSION=${NATIVE_OS_VERSION:Q} .endif # @@ -112,11 +112,11 @@ MAKEFLAGS+= OS_VERSION=${OS_VERSION:Q} # default command is likely correct for most OS, those that need to can set # it to a custom command in the later OPSYS-specific section. # -.if !defined(OPSYS_VERSION) -_OPSYS_VERSION_CMD= ${UNAME} -r | \ +.if !defined(NATIVE_OPSYS_VERSION) +_NATIVE_OPSYS_VERSION_CMD= ${UNAME} -r | \ awk -F. '{major=int($$1); minor=int($$2); if (minor>=100) minor=99; patch=int($$3); if (patch>=100) patch=99; printf "%02d%02d%02d", major, minor, patch}' -OPSYS_VERSION= ${_OPSYS_VERSION_CMD:sh} -MAKEFLAGS+= OPSYS_VERSION=${OPSYS_VERSION:Q} +NATIVE_OPSYS_VERSION= ${_NATIVE_OPSYS_VERSION_CMD:sh} +MAKEFLAGS+= NATIVE_OPSYS_VERSION=${NATIVE_OPSYS_VERSION:Q} .endif # Preload these for architectures not in all variations of bsd.own.mk, @@ -155,192 +155,240 @@ MACHINE_GNU_ARCH?= ${GNU_ARCH.${MACHINE_ARCH}:U${MACHINE_ARCH}} ## If changes are made to how OS_VERSION is set below please keep ## "pkgsrc/pkgtools/osabi/INSTALL" in-sync. -.if ${OPSYS} == "NetBSD" -LOWER_OPSYS?= netbsd +.if ${NATIVE_OPSYS} == "NetBSD" +NATIVE_LOWER_OPSYS?= netbsd -.elif ${OPSYS} == "AIX" +.elif ${NATIVE_OPSYS} == "AIX" . if exists(/usr/bin/oslevel) -_OS_VERSION!= /usr/bin/oslevel +_NATIVE_OS_VERSION!= /usr/bin/oslevel . else -_OS_VERSION!= echo `${UNAME} -v`.`${UNAME} -r` +_NATIVE_OS_VERSION!= echo `${UNAME} -v`.`${UNAME} -r` . endif -OS_VERSION= ${_OS_VERSION:C/([0-9]*\.[0-9]*).*/\1/} -LOWER_OPSYS_VERSUFFIX= ${_OS_VERSION} -LOWER_OPSYS?= aix -LOWER_VENDOR?= ibm - -.elif ${OPSYS} == "BSDOS" -LOWER_OPSYS?= bsdi - -.elif ${OPSYS} == "Cygwin" -LOWER_OPSYS?= cygwin -LOWER_VENDOR?= pc -_OS_VERSION!= ${UNAME} -r -OS_VERSION= ${_OS_VERSION:C/\(.*\)//} -OS_VARIANT!= ${UNAME} -s - -.elif ${OPSYS} == "Darwin" -LOWER_OPSYS?= darwin -LOWER_OPSYS_VERSUFFIX= ${OS_VERSION:C/([0-9]*).*/\1/} -LOWER_VENDOR?= apple -_OPSYS_VERSION_CMD= sw_vers -productVersion | \ +NATIVE_OS_VERSION= ${_NATIVE_OS_VERSION:C/([0-9]*\.[0-9]*).*/\1/} +NATIVE_LOWER_OPSYS_VERSUFFIX= ${_NATIVE_OS_VERSION} +NATIVE_LOWER_OPSYS?= aix +NATIVE_LOWER_VENDOR?= ibm + +.elif ${NATIVE_OPSYS} == "BSDOS" +NATIVE_LOWER_OPSYS?= bsdi + +.elif ${NATIVE_OPSYS} == "Cygwin" +NATIVE_LOWER_OPSYS?= cygwin +NATIVE_LOWER_VENDOR?= pc +_NATIVE_OS_VERSION!= ${UNAME} -r +NATIVE_OS_VERSION= ${_NATIVE_OS_VERSION:C/\(.*\)//} +NATIVE_OS_VARIANT!= ${UNAME} -s + +.elif ${NATIVE_OPSYS} == "Darwin" +NATIVE_LOWER_OPSYS?= darwin +NATIVE_LOWER_OPSYS_VERSUFFIX= ${NATIVE_OS_VERSION:C/([0-9]*).*/\1/} +NATIVE_LOWER_VENDOR?= apple +_NATIVE_OPSYS_VERSION_CMD= sw_vers -productVersion | \ awk -F. '{major=int($$1); minor=int($$2); if (minor>=100) minor=99; patch=int($$3); if (patch>=100) patch=99; printf "%02d%02d%02d", major, minor, patch}' -.elif ${OPSYS} == "DragonFly" -OS_VERSION:= ${OS_VERSION:C/-.*$//} -LOWER_OPSYS?= dragonfly -LOWER_VENDOR?= pc +.elif ${NATIVE_OPSYS} == "DragonFly" +NATIVE_OS_VERSION:= ${NATIVE_OS_VERSION:C/-.*$//} +NATIVE_LOWER_OPSYS?= dragonfly +NATIVE_LOWER_VENDOR?= pc -.elif ${OPSYS} == "FreeBSD" -OS_VERSION:= ${OS_VERSION:C/-.*$//} -LOWER_OPSYS?= freebsd -LOWER_OPSYS_VERSUFFIX= ${OS_VERSION:C/([0-9]*).*/\1/} +.elif ${NATIVE_OPSYS} == "FreeBSD" +NATIVE_OS_VERSION:= ${OS_VERSION:C/-.*$//} +NATIVE_LOWER_OPSYS?= freebsd +NATIVE_LOWER_OPSYS_VERSUFFIX= ${OS_VERSION:C/([0-9]*).*/\1/} . if ${MACHINE_ARCH} == "i386" -LOWER_VENDOR?= pc +NATIVE_LOWER_VENDOR?= pc . endif -LOWER_VENDOR?= unknown +NATIVE_LOWER_VENDOR?= unknown -.elif ${OPSYS} == "Haiku" -LOWER_OPSYS?= haiku -. if ${MACHINE_ARCH} == "i386" -LOWER_VENDOR?= pc +.elif ${NATIVE_OPSYS} == "Haiku" +NATIVE_LOWER_OPSYS?= haiku +. if ${NATIVE_MACHINE_ARCH} == "i386" +NATIVE_LOWER_VENDOR?= pc . endif -.elif ${OPSYS} == "Interix" -LOWER_OPSYS?= interix -LOWER_VENDOR?= pc +.elif ${NATIVE_OPSYS} == "Interix" +NATIVE_LOWER_OPSYS?= interix +NATIVE_LOWER_VENDOR?= pc . if exists(/usr/lib/libc.so.5.2) || exists(/usr/lib/x86/libc.so.5.2) -LOWER_OPSYS_VERSUFFIX= ${OS_VERSION:C/([0-9]*).*/\1/} +NATIVE_LOWER_OPSYS_VERSUFFIX= ${NATIVE_OS_VERSION:C/([0-9]*).*/\1/} . else -LOWER_OPSYS_VERSUFFIX?= 3 +NATIVE_LOWER_OPSYS_VERSUFFIX?= 3 . if exists(/usr/lib/libc.so.3.5) -OS_VERSION= 3.5 +NATIVE_OS_VERSION= 3.5 . elif exists(/usr/lib/libc.so.3.1) -OS_VERSION= 3.1 +NATIVE_OS_VERSION= 3.1 . else -OS_VERSION= 3.0 +NATIVE_OS_VERSION= 3.0 . endif . endif -.elif ${OPSYS} == "MirBSD" -LOWER_OPSYS?= mirbsd -LOWER_OPSYS_VERSUFFIX= ${OS_VERSION} -LOWER_VENDOR?= unknown +.elif ${NATIVE_OPSYS} == "MirBSD" +NATIVE_LOWER_OPSYS?= mirbsd +NATIVE_LOWER_OPSYS_VERSUFFIX= ${NATIVE_OS_VERSION} +NATIVE_LOWER_VENDOR?= unknown -.elif !empty(OPSYS:MIRIX*) -LOWER_OPSYS?= irix -LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION} -LOWER_VENDOR?= sgi +.elif !empty(NATIVE_OPSYS:MIRIX*) +NATIVE_LOWER_OPSYS?= irix +NATIVE_LOWER_OPSYS_VERSUFFIX?= ${NATIVE_OS_VERSION} +NATIVE_LOWER_VENDOR?= sgi -.elif ${OPSYS} == "Linux" -OS_VERSION:= ${OS_VERSION:C/-.*$//} -LOWER_OPSYS?= linux +.elif ${NATIVE_OPSYS} == "Linux" +NATIVE_OS_VERSION:= ${NATIVE_OS_VERSION:C/-.*$//} +NATIVE_LOWER_OPSYS?= linux . if exists(/etc/lsb-release) CHROMEOS_RELEASE_NAME!= awk -F = '$$1 == "CHROMEOS_RELEASE_NAME" { print $$2 }' /etc/lsb-release . endif . if exists(/etc/debian_version) -LOWER_VENDOR?= debian +NATIVE_LOWER_VENDOR?= debian . elif exists(/etc/mandrake-release) -LOWER_VENDOR?= mandrake +NATIVE_LOWER_VENDOR?= mandrake . elif exists(/etc/redhat-version) || exists(/etc/redhat-release) -LOWER_VENDOR?= redhat +NATIVE_LOWER_VENDOR?= redhat . elif exists(/etc/slackware-version) -LOWER_VENDOR?= slackware +NATIVE_LOWER_VENDOR?= slackware . elif exists(/etc/ssdlinux_version) -LOWER_VENDOR?= ssd +NATIVE_LOWER_VENDOR?= ssd . elif !empty(CHROMEOS_RELEASE_NAME) -LOWER_VENDOR?= chromeos -. elif ${MACHINE_ARCH} == "i386" -LOWER_VENDOR?= pc +NATIVE_LOWER_VENDOR?= chromeos +. elif ${NATIVE_MACHINE_ARCH} == "i386" +NATIVE_LOWER_VENDOR?= pc . endif -LOWER_VENDOR?= unknown -OS_VARIANT!= ${UNAME} -r -OS_VARIANT:= ${OS_VARIANT:C/^.*-//} -. if ${OS_VARIANT} != "Microsoft" -OS_VARIANT= ${LOWER_VENDOR} +NATIVE_LOWER_VENDOR?= unknown +NATIVE_OS_VARIANT!= ${UNAME} -r +NATIVE_OS_VARIANT:= ${NATIVE_OS_VARIANT:C/^.*-//} +. if ${NATIVE_OS_VARIANT} != "Microsoft" +NATIVE_OS_VARIANT= ${NATIVE_LOWER_VENDOR} . endif +# XXX NATIVE_HOST_MACHINE_ARCH? ??? . if !defined(HOST_MACHINE_ARCH) HOST_MACHINE_ARCH!= ${UNAME} -m MAKEFLAGS+= HOST_MACHINE_ARCH=${HOST_MACHINE_ARCH:Q} . endif -.elif ${OPSYS} == "OpenBSD" -LOWER_OPSYS?= openbsd - -.elif ${OPSYS} == "OSF1" -OS_VERSION:= ${OS_VERSION:C/^V//} -LOWER_OPSYS?= osf1 -LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION} -LOWER_VENDOR?= dec - -.elif ${OPSYS} == "HPUX" -OS_VERSION:= ${OS_VERSION:C/^B.//} -LOWER_OPSYS?= hpux -LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION} -LOWER_VENDOR?= hp - -.elif ${OPSYS} == "SunOS" -LOWER_VENDOR?= sun -LOWER_OPSYS?= solaris -LOWER_OPSYS_VERSUFFIX= 2.${OS_VERSION:C/5.//} +.elif ${NATIVE_OPSYS} == "OpenBSD" +NATIVE_LOWER_OPSYS?= openbsd + +.elif ${NATIVE_OPSYS} == "OSF1" +NATIVE_OS_VERSION:= ${NATIVE_OS_VERSION:C/^V//} +NATIVE_LOWER_OPSYS?= osf1 +NATIVE_LOWER_OPSYS_VERSUFFIX?= ${NATIVE_OS_VERSION} +NATIVE_LOWER_VENDOR?= dec + +.elif ${NATIVE_OPSYS} == "HPUX" +NATIVE_OS_VERSION:= ${NATIVE_OS_VERSION:C/^B.//} +NATIVE_LOWER_OPSYS?= hpux +NATIVE_LOWER_OPSYS_VERSUFFIX?= ${NATIVE_OS_VERSION} +NATIVE_LOWER_VENDOR?= hp + +.elif ${NATIVE_OPSYS} == "SunOS" +NATIVE_LOWER_VENDOR?= sun +NATIVE_LOWER_OPSYS?= solaris +NATIVE_LOWER_OPSYS_VERSUFFIX= 2.${NATIVE_OS_VERSION:C/5.//} . if !defined(_UNAME_V) _UNAME_V!= ${UNAME} -v MAKEFLAGS+= _UNAME_V=${_UNAME_V:Q} . endif . if !empty(_UNAME_V:Mjoyent_*) -OS_VARIANT= SmartOS -LOWER_VARIANT_VERSION= ${_UNAME_V:C/joyent_//} +NATIVE_OS_VARIANT= SmartOS +NATIVE_LOWER_VARIANT_VERSION= ${_UNAME_V:C/joyent_//} . elif !empty(_UNAME_V:Momnios-*) -OS_VARIANT= OmniOS -LOWER_VARIANT_VERSION!= /usr/bin/awk '{ print $$3; exit 0; }' /etc/release +NATIVE_OS_VARIANT= OmniOS +NATIVE_LOWER_VARIANT_VERSION!= /usr/bin/awk '{ print $$3; exit 0; }' /etc/release . elif !empty(_UNAME_V:Mtribblix-*) -OS_VARIANT= Tribblix -LOWER_VARIANT_VERSION!= /usr/bin/awk '{ print $$2; exit 0; }' /etc/release +NATIVE_OS_VARIANT= Tribblix +NATIVE_LOWER_VARIANT_VERSION!= /usr/bin/awk '{ print $$2; exit 0; }' /etc/release . else -OS_VARIANT= Solaris -LOWER_VARIANT_VERSION= ${_UNAME_V} +NATIVE_OS_VARIANT= Solaris +NATIVE_LOWER_VARIANT_VERSION= ${_UNAME_V} . endif .elif ${OPSYS} == "SCO_SV" -SCO_RELEASE!= ${UNAME} -r -SCO_VERSION!= ${UNAME} -v -LOWER_VENDOR?= pc -LOWER_OPSYS?= sco -LOWER_OPSYS_VERSUFFIX= ${SCO_RELEASE}v${SCO_VERSION} -_UNAME_V!= ${UNAME} -v +SCO_RELEASE!= ${UNAME} -r +SCO_VERSION!= ${UNAME} -v +NATIVE_LOWER_VENDOR?= pc +NATIVE_LOWER_OPSYS?= sco +NATIVE_LOWER_OPSYS_VERSUFFIX= ${SCO_RELEASE}v${SCO_VERSION} +_UNAME_V!= ${UNAME} -v . if !empty(_UNAME_V:M5.0*) -OS_VARIANT= SCOOSR5 +NATIVE_OS_VARIANT= SCOOSR5 . elif !empty(_UNAME_V:M6.0*) -OS_VARIANT= SCOOSR6 +NATIVE_OS_VARIANT= SCOOSR6 . endif -.elif ${OPSYS} == "UnixWare" -SCO_RELEASE?= sysv5${OPSYS} -SCO_VERSION!= ${UNAME} -v -LOWER_VENDOR?= unknown -LOWER_OPSYS_VERSUFFIX= ${SCO_RELEASE}${SCO_VERSION} +.elif ${NATIVE_OPSYS} == "UnixWare" +SCO_RELEASE?= sysv5${NATIVE_OPSYS} +SCO_VERSION!= ${UNAME} -v +NATIVE_LOWER_VENDOR?= unknown +NATIVE_LOWER_OPSYS_VERSUFFIX= ${SCO_RELEASE}${SCO_VERSION} -.elif ${OPSYS} == "Minix" -LOWER_VENDOR?= unknown -LOWER_OPSYS:= ${OPSYS:tl} +.elif ${NATIVE_OPSYS} == "Minix" +NATIVE_LOWER_VENDOR?= unknown +NATIVE_LOWER_OPSYS:= ${NATIVE_OPSYS:tl} -.elif !defined(LOWER_OPSYS) -LOWER_OPSYS:= ${OPSYS:tl} +.elif !defined(NATIVE_LOWER_OPSYS) +NATIVE_LOWER_OPSYS:= ${NATIVE_OPSYS:tl} .endif # Now commit the version values computed above, eliding the :sh -OS_VERSION:= ${OS_VERSION} - -MAKEFLAGS+= LOWER_OPSYS=${LOWER_OPSYS:Q} - -LOWER_VENDOR?= # empty ("arch--opsys") - +NATIVE_OS_VERSION:= ${NATIVE_OS_VERSION} + +MAKEFLAGS+= NATIVE_LOWER_OPSYS=${NATIVE_LOWER_OPSYS:Q} + +NATIVE_LOWER_VENDOR?= # empty ("arch--opsys") + +# List of variables that must be set to determine a cross-compilation +# target. +CROSSVARS?= # empty + +# Cross-compilation target settings. +CROSSVARS+= OPSYS +OPSYS= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_OPSYS}:${NATIVE_OPSYS}} +CROSSVARS+= OS_VERSION +OS_VERSION= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_OS_VERSION}:${NATIVE_OS_VERSION}} +CROSSVARS+= OPSYS_VERSION +OPSYS_VERSION= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_OPSYS_VERSION}:${NATIVE_OPSYS_VERSION}} +CROSSVARS+= LOWER_OPSYS +LOWER_OPSYS= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_LOWER_OPSYS}:${NATIVE_LOWER_OPSYS}} +CROSSVARS+= LOWER_OPSYS_VERSUFFIX +LOWER_OPSYS_VERSUFFIX= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_LOWER_OPSYS_VERSUFFIX}:${NATIVE_LOWER_OPSYS_VERSUFFIX}} +CROSSVARS+= LOWER_VARIANT_VERSION +LOWER_VARIANT_VERSION= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_LOWER_VARIANT_VERSION}:${NATIVE_LOWER_VARIANT_VERSION}} +CROSSVARS+= LOWER_VENDOR +LOWER_VENDOR= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_LOWER_VENDOR}:${NATIVE_LOWER_VENDOR}} +CROSSVARS+= LOWER_OS_VARIANT +OS_VARIANT= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_OS_VARIANT}:${NATIVE_OS_VARIANT}} + +# Remember the MACHINE_ARCH that make was built with before we override +# it with CROSS_MACHINE_ARCH if USE_CROSS_COMPILE is enabled. +CROSSVARS+= MACHINE_ARCH NATIVE_MACHINE_ARCH:= ${MACHINE_ARCH} + NATIVE_MACHINE_PLATFORM?= ${OPSYS}-${OS_VERSION}-${NATIVE_MACHINE_ARCH} MACHINE_PLATFORM?= ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH} -NATIVE_MACHINE_GNU_PLATFORM?= ${NATIVE_MACHINE_GNU_ARCH}-${LOWER_VENDOR}-${LOWER_OPSYS:C/[0-9]//g}${NATIVE_APPEND_ELF}${LOWER_OPSYS_VERSUFFIX}${NATIVE_APPEND_ABI} +NATIVE_MACHINE_GNU_PLATFORM?= ${NATIVE_MACHINE_GNU_ARCH}-${NATIVE_LOWER_VENDOR}-${NATIVE_LOWER_OPSYS:C/[0-9]//g}${NATIVE_APPEND_ELF}${NATIVE_LOWER_OPSYS_VERSUFFIX}${NATIVE_APPEND_ABI} MACHINE_GNU_PLATFORM?= ${MACHINE_GNU_ARCH}-${LOWER_VENDOR}-${LOWER_OPSYS:C/[0-9]//g}${APPEND_ELF}${LOWER_OPSYS_VERSUFFIX}${APPEND_ABI} +.ifdef TARGET_MACHINE_ARCH +TARGET_MACHINE_GNU_ARCH= ${GNU_ARCH.${TARGET_MACHINE_ARCH}:U${TARGET_MACHINE_ARCH}} +TARGET_MACHINE_GNU_PLATFORM= ${TARGET_MACHINE_GNU_ARCH}-${TARGET_LOWER_VENDOR}-${TARGET_LOWER_OPSYS:C/[0-9]//g}${TARGET_APPEND_ELF}${TARGET_LOWER_OPSYS_VERSUFFIX}${TARGET_APPEND_ABI} +TARGET_MACHINE_PLATFORM= ${TARGET_OPSYS}-${TARGET_OS_VERSION}-${TARGET_MACHINE_ARCH} +.endif + +# Set this before does, since it doesn't know about Darwin +# We will later set OBJECT_FMT to be conditional on USE_CROSS_COMPILE. +.if ${NATIVE_OPSYS} == "Darwin" +NATIVE_OBJECT_FMT?= Mach-O +OBJECT_FMT?= Mach-O +.endif + # # cross-libtool is special -- it is built as a native package, but it # needs tools set up as if for a cross-compiled package because it @@ -352,17 +400,23 @@ MACHINE_GNU_PLATFORM?= ${MACHINE_GNU_ARCH}-${LOWER_VENDOR}-${LOWER_OPSYS:C/[0-9 # the rest of the native package build with USE_CROSS_COMPILE=no. # # This can't live inside the cross-libtool makefile because the -# TARGET_ARCH / MACHINE_ARCH / NATIVE_MACHINE_ARCH switcheroo has to -# happen in the middle of this file -- after NATIVE_MACHINE_ARCH is -# determined, before MACHINE_ARCH is used for anything else. +# TARGET_MACHINE_ARCH / MACHINE_ARCH / NATIVE_MACHINE_ARCH switcheroo +# has to happen in the middle of this file -- after NATIVE_MACHINE_ARCH +# is determined, before MACHINE_ARCH is used for anything else. # -.if !empty(LIBTOOL_CROSS_COMPILE:M[yY][eE][sS]) -. if !defined(TARGET_ARCH) -PKG_FAIL_REASON+= "Must set TARGET_ARCH for cross-libtool." +.if ${LIBTOOL_CROSS_COMPILE:U:tl} == "yes" +. if !defined(TARGET_MACHINE_ARCH) +PKG_FAIL_REASON+= "Must set TARGET_MACHINE_ARCH for cross-libtool." . endif -MACHINE_ARCH:= ${TARGET_ARCH} +. for _v_ in ${CROSSVARS} +${_v_}= ${TARGET_${_v_}} +. endfor +# XXX Other CROSSVARS for _BUILD_DEFS? _BUILD_DEFS.MACHINE_ARCH= ${NATIVE_MACHINE_ARCH} _BUILD_DEFS.MACHINE_GNU_ARCH= ${NATIVE_MACHINE_GNU_ARCH} +_BUILD_DEFS.OBJECT_FMT= ${NATIVE_OBJECT_FMT} +_BUILD_DEFS.OPSYS= ${NATIVE_OPSYS} +_BUILD_DEFS.OS_VERSION= ${NATIVE_OS_VERSION} TOOLS_USE_CROSS_COMPILE= yes .else TOOLS_USE_CROSS_COMPILE= ${USE_CROSS_COMPILE:Uno} @@ -376,11 +430,6 @@ NEED_OWN_INSTALL_TARGET=no USETOOLS= no MAKE_ENV+= USETOOLS=no -# Set this before does, since it doesn't know about Darwin -.if ${OPSYS} == "Darwin" -OBJECT_FMT?= Mach-O -.endif - ACCEPTABLE_LICENSES?= ${DEFAULT_ACCEPTABLE_LICENSES} # Provide PKGPATH early on so that mk.conf can use it. @@ -389,6 +438,43 @@ PKGPATH?= ${.CURDIR:C|.*/([^/]*/[^/]*)$|\1|} # Load the settings from MAKECONF, which is /etc/mk.conf by default. .include +# Save the OBJECT_FMT determined by bsd.own.mk, and turn OBJECT_FMT +# into a cross-compilation variable so it can be overridden by +# CROSS_OBJECT_FMT. +NATIVE_OBJECT_FMT:= ${OBJECT_FMT} +CROSSVARS+= OBJECT_FMT +OBJECT_FMT= \ + ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_OBJECT_FMT}:${NATIVE_OBJECT_FMT}} + +# When cross-compilation support is requested, the following options +# must be specified as well or guessable: +# - Variables like MACHINE_ARCH are set to CROSS_MACHINE_ARCH. +# - CROSS_DESTDIR is guessed from MAKEOBJDIR and MACHINE_ARCH. +# - PKG_DBDIR is expanded and prefixed with CROSS_DESTDIR +# - DESTDIR support is required +# +# _CROSS_DESTDIR is set for internal use to avoid conditionalising +# the use. + +.if ${USE_CROSS_COMPILE:U:tl} == "yes" # defaults/mk.conf not yet loaded, so :U +. for _v_ in ${CROSSVARS} +. ifndef CROSS_${_v_} +MISSING_CROSSVARS= yes +. warning Missing CROSS_${_v_} setting +. endif +${_v_}:= ${CROSS_${_v_}} +. endfor +. ifdef MISSING_CROSSVARS +. error USE_CROSS_COMPILE=yes but missing cross variable settings +. endif +CROSS_DESTDIR?= ${MAKEOBJDIR}/destdir.${MACHINE_ARCH} +. if !exists(${CROSS_DESTDIR}/usr/include/stddef.h) +PKG_FAIL_REASON+= "The cross-compiling root ${CROSS_DESTDIR:Q} is incomplete" +. else +_CROSS_DESTDIR= ${CROSS_DESTDIR} +. endif +.endif + .if ${OPSYS} == "OpenBSD" . if defined(ELF_TOOLCHAIN) && ${ELF_TOOLCHAIN} == "yes" OBJECT_FMT?= ELF @@ -450,28 +536,6 @@ SHAREMODE?= ${DOCMODE} @${FALSE} .endif -# When cross-compilation support is requested, the following options -# must be specified as well or guessable: -# - MACHINE_ARCH is set to TARGET_ARCH if set. -# - CROSS_DESTDIR is guessed from MAKEOBJDIR and MACHINE_ARCH. -# - PKG_DBDIR is expanded and prefixed with CROSS_DESTDIR -# - DESTDIR support is required -# -# _CROSS_DESTDIR is set for internal use to avoid conditionalising -# the use. - -.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) -. if defined(TARGET_ARCH) -MACHINE_ARCH= ${TARGET_ARCH} -. endif -CROSS_DESTDIR?= ${MAKEOBJDIR}/destdir.${MACHINE_ARCH} -. if !exists(${CROSS_DESTDIR}/usr/include/stddef.h) -PKG_FAIL_REASON+= "The cross-compiling root ${CROSS_DESTDIR:Q} is incomplete" -. else -_CROSS_DESTDIR= ${CROSS_DESTDIR} -. endif -.endif - # Load the OS-specific definitions for program variables. Default to loading # the NetBSD ones if an OS-specific file doesn't exist. .if exists(${_PKGSRC_TOPDIR}/mk/platform/${OPSYS}.mk) @@ -554,13 +618,17 @@ _MAKE_PACKAGE_AS_ROOT?= yes # TOOLS_CROSS_DESTDIR is used for the libtool build to make a wrapper # that points at the cross-destdir as sysroot, without setting # _CROSS_DESTDIR because we're actually building a native package. +.if ${TOOLS_USE_CROSS_COMPILE:tl} == "yes" TOOLS_CROSS_DESTDIR= ${CROSS_DESTDIR} +.else +TOOLS_CROSS_DESTDIR= # empty +.endif # Depends on MACHINE_ARCH override above .if ${OPSYS} == "NetBSD" -# XXX NATIVE_OBJECT_FMT is a cop-out -- but seriously, who is going to -# do cross-builds on a NetBSD host that still uses a.out? -NATIVE_OBJECT_FMT?= ${OBJECT_FMT} +. ifdef TARGET_MACHINE_ARCH +TARGET_OBJECT_FMT?= ${OBJECT_FMT} # XXX +. endif . if ${NATIVE_OBJECT_FMT} == "ELF" && \ (!empty(NATIVE_MACHINE_ARCH:Mearm*) || \ ${NATIVE_MACHINE_GNU_ARCH} == "arm" || \ @@ -585,12 +653,28 @@ NATIVE_APPEND_ELF= elf ${MACHINE_ARCH} == "vax") APPEND_ELF= elf . endif +. if defined(TARGET_MACHINE_ARCH) && \ + ${TARGET_OBJECT_FMT} == "ELF" && \ + (!empty(TARGET_MACHINE_ARCH:Mearm*) || \ + ${TARGET_MACHINE_GNU_ARCH} == "arm" || \ + ${TARGET_MACHINE_ARCH} == "i386" || \ + ${TARGET_MACHINE_ARCH} == "m68k" || \ + ${TARGET_MACHINE_ARCH} == "m68000" || \ + ${TARGET_MACHINE_GNU_ARCH} == "sh" || \ + ${TARGET_MACHINE_GNU_ARCH} == "shle" || \ + ${TARGET_MACHINE_ARCH} == "sparc" || \ + ${TARGET_MACHINE_ARCH} == "vax") +TARGET_APPEND_ELF= elf +. endif . if !empty(NATIVE_MACHINE_ARCH:Mearm*) NATIVE_APPEND_ABI= -${NATIVE_MACHINE_ARCH:C/eb//:C/v[4-7]//:S/earm/eabi/} . endif . if !empty(MACHINE_ARCH:Mearm*) APPEND_ABI= -${MACHINE_ARCH:C/eb//:C/v[4-7]//:S/earm/eabi/} . endif +. if !empty(TARGET_MACHINE_ARCH:Mearm*) +TARGET_APPEND_ABI= -${TARGET_MACHINE_ARCH:C/eb//:C/v[4-7]//:S/earm/eabi/} +. endif .endif # if the system is IPv6-ready, compile with IPv6 support turned on. @@ -604,6 +688,13 @@ LOCALBASE?= /usr/pkg TOOLBASE:= ${LOCALBASE} .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) LOCALBASE= ${CROSS_LOCALBASE:U/usr/pkg} +VARBASE= ${CROSS_VARBASE:U/var} +SYSCONFBASE= ${CROSS_SYSCONFBASE:U/etc} +. if defined(CROSS_ABI) +ABI= ${CROSS_ABI} +. else +. undef ABI +. endif .endif X11_TYPE?= modular .if !empty(X11_TYPE:Mnative) @@ -727,12 +818,10 @@ MAKEFLAGS+= _PKGSRCDIR=${_PKGSRCDIR:Q} .endif PKGSRCDIR= ${_PKGSRCDIR} -.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) -_CROSSDIR_SUFFIX= .${MACHINE_ARCH} +.if ${USE_CROSS_COMPILE:tl} == "yes" +_CROSSDIR_SUFFIX= .${MACHINE_PLATFORM} .endif -DISTDIR?= ${PKGSRCDIR}/distfiles -PACKAGES?= ${PKGSRCDIR}/packages${_CROSSDIR_SUFFIX} TEMPLATES?= ${PKGSRCDIR}/templates PATCHDIR?= ${.CURDIR}/patches diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk index ed398893b926..010b88902ac1 100644 --- a/mk/buildlink3/bsd.buildlink3.mk +++ b/mk/buildlink3/bsd.buildlink3.mk @@ -346,12 +346,12 @@ _BLNK_PKG_DBDIR.${_pkg_}?= _BLNK_PKG_DBDIR.${_pkg_}_not_found _BLNK_PKG_INFO.${_pkg_}?= ${TRUE} BUILDLINK_PKGNAME.${_pkg_}?= ${_pkg_} # Usual systems has builtin packages in /usr -. if exists(${_CROSS_DESTDIR:U}/usr) +. if exists(${TOOLS_CROSS_DESTDIR}/usr) BUILDLINK_PREFIX.${_pkg_}?= /usr # Haiku OS has posix packages in /boot/sytem/develop (or /boot/common) -. elif exists(${_CROSS_DESTDIR:U}/boot/system/develop) +. elif exists(${TOOLS_CROSS_DESTDIR}/boot/system/develop) BUILDLINK_PREFIX.${_pkg_}?= /boot/system/develop -. elif exists(${_CROSS_DESTDIR:U}/boot/common) +. elif exists(${TOOLS_CROSS_DESTDIR}/boot/common) BUILDLINK_PREFIX.${_pkg_}?= /boot/common . else # XXX: elsewhere? @@ -384,9 +384,9 @@ MAKEVARS+= _BLNK_PKG_DBDIR.${_pkg_} . endif . if empty(_BLNK_PKG_DBDIR.${_pkg_}:M*not_found) -_BLNK_PKG_INFO.${_pkg_}?= ${PKG_INFO_CMD} -K ${_BLNK_PKG_DBDIR.${_pkg_}:H} +_BLNK_PKG_INFO.${_pkg_}?= ${NATIVE_PKG_INFO_CMD} -K ${_BLNK_PKG_DBDIR.${_pkg_}:H} . else -_BLNK_PKG_INFO.${_pkg_}?= ${PKG_INFO_CMD} -K ${_PKG_DBDIR} +_BLNK_PKG_INFO.${_pkg_}?= ${NATIVE_PKG_INFO_CMD} -K ${_PKG_DBDIR} . endif BUILDLINK_PKGNAME.${_pkg_}?= ${_BLNK_PKG_DBDIR.${_pkg_}:T} @@ -464,7 +464,7 @@ BUILDLINK_LIBS+= ${_flag_} !empty(BUILDLINK_AUTO_DIRS.${_pkg_}:M[yY][eE][sS]) . if !empty(BUILDLINK_INCDIRS.${_pkg_}) . for _dir_ in ${BUILDLINK_INCDIRS.${_pkg_}:S/^/${BUILDLINK_PREFIX.${_pkg_}}\//} -. if exists(${_CROSS_DESTDIR:U}${_dir_}) +. if exists(${TOOLS_CROSS_DESTDIR}${_dir_}) . if empty(BUILDLINK_CPPFLAGS:M-I${_dir_}) BUILDLINK_CPPFLAGS+= -I${_dir_} . endif @@ -473,7 +473,7 @@ BUILDLINK_CPPFLAGS+= -I${_dir_} . endif . if !empty(BUILDLINK_LIBDIRS.${_pkg_}) . for _dir_ in ${BUILDLINK_LIBDIRS.${_pkg_}:S/^/${BUILDLINK_PREFIX.${_pkg_}}\//} -. if exists(${_CROSS_DESTDIR:U}${_dir_}) +. if exists(${TOOLS_CROSS_DESTDIR}${_dir_}) . if empty(BUILDLINK_LDFLAGS:M-L${_dir_}) BUILDLINK_LDFLAGS+= -L${_dir_} . endif @@ -482,7 +482,7 @@ BUILDLINK_LDFLAGS+= -L${_dir_} . endif . if !empty(BUILDLINK_RPATHDIRS.${_pkg_}) . for _dir_ in ${BUILDLINK_RPATHDIRS.${_pkg_}:S/^/${BUILDLINK_PREFIX.${_pkg_}}\//} -. if exists(${_CROSS_DESTDIR:U}${_dir_}) +. if exists(${TOOLS_CROSS_DESTDIR}${_dir_}) . if empty(BUILDLINK_LDFLAGS:M${COMPILER_RPATH_FLAG}${_dir_}) BUILDLINK_LDFLAGS+= ${COMPILER_RPATH_FLAG}${_dir_} . endif @@ -499,7 +499,7 @@ BUILDLINK_LDFLAGS+= ${COMPILER_RPATH_FLAG}${_dir_} .for _pkg_ in ${_BLNK_PACKAGES} . if !empty(BUILDLINK_RPATHDIRS.${_pkg_}) . for _dir_ in ${BUILDLINK_RPATHDIRS.${_pkg_}:S/^/${LOCALBASE}\//} -. if exists(${_CROSS_DESTDIR:U}${_dir_}) +. if exists(${TOOLS_CROSS_DESTDIR}${_dir_}) . if empty(BUILDLINK_LDFLAGS:M${COMPILER_RPATH_FLAG}${_dir_}) BUILDLINK_LDFLAGS+= ${COMPILER_RPATH_FLAG}${_dir_} . endif @@ -670,10 +670,10 @@ ${_BLNK_COOKIE.${_pkg_}}: *) buildlink_dir="${BUILDLINK_DIR}" ;; \ esac; \ [ -z "${BUILDLINK_PREFIX.${_pkg_}:Q}" ] || \ - cd ${_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}} && \ + cd ${TOOLS_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}} && \ ${_BLNK_FILES_CMD.${_pkg_}} | \ while read file; do \ - src="${_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}}/$$file"; \ + src="${TOOLS_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}}/$$file"; \ [ -f "$$src" ] || continue; \ dest="$$buildlink_dir/$$file"; \ if [ -n "${BUILDLINK_FNAME_TRANSFORM.${_pkg_}:Q}" ]; then \ @@ -710,10 +710,10 @@ ${_BLNK_COOKIE.${_pkg_}}: *) buildlink_dir="${BUILDLINK_DIR}" ;; \ esac; \ [ -z "${BUILDLINK_PREFIX.${_pkg_}:Q}" ] || \ - cd ${_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}} && \ + cd ${TOOLS_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}} && \ ${_BLNK_FILES_CMD.${_pkg_}} | \ while read file; do \ - src="${_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}}/$$file"; \ + src="${TOOLS_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}}/$$file"; \ if [ ! -f "$$src" ]; then \ msg="$$src: not found"; \ else \ @@ -881,7 +881,7 @@ _CWRAPPERS_TRANSFORM+= I:${_dir_}/: .for _pkg_ in ${_BLNK_PACKAGES} . if !empty(BUILDLINK_LIBDIRS.${_pkg_}) . for _dir_ in ${BUILDLINK_LIBDIRS.${_pkg_}} -. if exists(${_CROSS_DESTDIR:U}${BUILDLINK_PREFIX.${_pkg_}}/${_dir_}) +. if exists(${TOOLS_CROSS_DESTDIR}${BUILDLINK_PREFIX.${_pkg_}}/${_dir_}) _BLNK_PASSTHRU_RPATHDIRS+= ${BUILDLINK_PREFIX.${_pkg_}}/${_dir_} . endif . endfor diff --git a/mk/buildlink3/find-files.mk b/mk/buildlink3/find-files.mk index 865755b123be..597a20310e8f 100644 --- a/mk/buildlink3/find-files.mk +++ b/mk/buildlink3/find-files.mk @@ -76,12 +76,14 @@ USE_TOOLS+= grep . if !defined(${_var_}) ${_var_}= __nonexistent__ . for _file_ in ${BUILTIN_FIND_FILES.${_var_}} -. if !empty(${_var_}:M__nonexistent__) && exists(${_file_}) +. if !empty(${_var_}:M__nonexistent__) && \ + exists(${TOOLS_CROSS_DESTDIR}${_file_}) . if !defined(BUILTIN_FIND_GREP.${_var_}) ${_var_}= ${_file_} . else ${_var_}!= \ - if ${GREP} -q ${BUILTIN_FIND_GREP.${_var_}:Q} ${_file_:Q}; then \ + if ${GREP} -q ${BUILTIN_FIND_GREP.${_var_}:Q} \ + ${TOOLS_CROSS_DESTDIR:Q}${_file_:Q}; then \ ${ECHO} ${_file_:Q}; \ else \ ${ECHO} __nonexistent__; \ diff --git a/mk/buildlink3/find-headers.mk b/mk/buildlink3/find-headers.mk index da5ce75b1d38..306ad49eed24 100644 --- a/mk/buildlink3/find-headers.mk +++ b/mk/buildlink3/find-headers.mk @@ -80,12 +80,14 @@ BUILTIN_INCLUDE_DIRS?= ${COMPILER_INCLUDE_DIRS} ${"${X11_TYPE:Mnative}":?${X11BA ${_var_}= __nonexistent__ . for _file_ in ${BUILTIN_FIND_HEADERS.${_var_}} . for _dir_ in ${BUILTIN_INCLUDE_DIRS} -. if !empty(${_var_}:M__nonexistent__) && exists(${_dir_}/${_file_}) +. if !empty(${_var_}:M__nonexistent__) && \ + exists(${TOOLS_CROSS_DESTDIR}${_dir_}/${_file_}) . if !defined(BUILTIN_FIND_GREP.${_var_}) ${_var_}= ${_dir_}/${_file_} . else ${_var_}!= \ - if ${GREP} -q ${BUILTIN_FIND_GREP.${_var_}:Q} ${_dir_:Q}/${_file_:Q}; then \ + if ${GREP} -q ${BUILTIN_FIND_GREP.${_var_}:Q} \ + ${TOOLS_CROSS_DESTDIR:Q}${_dir_:Q}/${_file_:Q}; then \ ${ECHO} ${_dir_:Q}/${_file_:Q}; \ else \ ${ECHO} __nonexistent__; \ diff --git a/mk/buildlink3/find-libs.mk b/mk/buildlink3/find-libs.mk index 435d6fcad20d..62161a13e4db 100644 --- a/mk/buildlink3/find-libs.mk +++ b/mk/buildlink3/find-libs.mk @@ -58,7 +58,8 @@ BUILTIN_LIB_FOUND.${_lib_}= no . for _path_ in ${COMPILER_LIB_DIRS} . if ${BUILTIN_LIB_FOUND.${_lib_}} == "no" BUILTIN_LIB_FOUND.${_lib_}!= \ - if ${TEST} "`${ECHO} ${_path_}/lib${_lib_}.*`" != "${_path_}/lib${_lib_}.*"; then \ + if ${TEST} "`${ECHO} ${TOOLS_CROSS_DESTDIR}${_path_}/lib${_lib_}.*`" \ + != "${TOOLS_CROSS_DESTDIR}${_path_}/lib${_lib_}.*"; then \ ${ECHO} yes; \ else \ ${ECHO} no; \ diff --git a/mk/buildlink3/find-pkgconfig-files.mk b/mk/buildlink3/find-pkgconfig-files.mk index 30aa5f9c44aa..315951f40180 100644 --- a/mk/buildlink3/find-pkgconfig-files.mk +++ b/mk/buildlink3/find-pkgconfig-files.mk @@ -75,7 +75,8 @@ BUILTIN_PKGCONFIG_DIRS?= /usr/lib/pkgconfig \ ${_var_}= __nonexistent__ . for _file_ in ${BUILTIN_FIND_PKGCONFIG_FILES.${_var_}} . for _dir_ in ${BUILTIN_PKGCONFIG_DIRS} -. if !empty(${_var_}:M__nonexistent__) && exists(${_dir_}/${_file_}) +. if !empty(${_var_}:M__nonexistent__) && \ + exists(${TOOLS_CROSS_DESTDIR}${_dir_}/${_file_}) ${_var_}= ${_dir_}/${_file_} . endif . endfor diff --git a/mk/buildlink3/pkgconfig-builtin.mk b/mk/buildlink3/pkgconfig-builtin.mk index ab9105c114fa..681ef36483b0 100644 --- a/mk/buildlink3/pkgconfig-builtin.mk +++ b/mk/buildlink3/pkgconfig-builtin.mk @@ -52,7 +52,7 @@ MAKEVARS:= ${MAKEVARS} IS_BUILTIN.${BUILTIN_PKG} defined(BUILTIN_VERSION_SCRIPT.${BUILTIN_PKG}))) BUILTIN_VERSION_SCRIPT.${BUILTIN_PKG}?= ${SED} -n -e 's/Version: //p' BUILTIN_VERSION.${BUILTIN_PKG}!= ${BUILTIN_VERSION_SCRIPT.${BUILTIN_PKG}} \ - ${FIND_FILES_${BUILTIN_PKG}} + ${TOOLS_CROSS_DESTDIR}${FIND_FILES_${BUILTIN_PKG}} BUILTIN_PKG.${BUILTIN_PKG}:= ${BUILTIN_PKG}-${BUILTIN_VERSION.${BUILTIN_PKG}} .endif MAKEVARS:= ${MAKEVARS} BUILTIN_PKG.${BUILTIN_PKG} diff --git a/mk/configure/gnu-configure.mk b/mk/configure/gnu-configure.mk index e5c9b4e207c3..d13d3461ff0b 100644 --- a/mk/configure/gnu-configure.mk +++ b/mk/configure/gnu-configure.mk @@ -40,7 +40,7 @@ _PKG_VARS.gnu-configure= \ GNU_CONFIGURE_LIBDIR GNU_CONFIGURE_INFODIR GNU_CONFIGURE_MANDIR \ CONFIGURE_HAS_LIBDIR CONFIGURE_HAS_MANDIR CONFIGURE_HAS_INFODIR \ OVERRIDE_DIRDEPTH.configure \ - USE_GNU_CONFIGURE_HOST + USE_GNU_CONFIGURE_HOST USE_GNU_CONFIGURE_TARGET HAS_CONFIGURE= defined OVERRIDE_GNU_CONFIG_SCRIPTS= defined @@ -51,7 +51,8 @@ CONFIGURE_ENV+= LIBS=${LIBS:M*:Q} CONFIGURE_ENV+= ac_given_INSTALL=${INSTALL:Q}\ -c\ -o\ ${BINOWN}\ -g\ ${BINGRP} .if (defined(USE_LIBTOOL) || !empty(PKGPATH:Mdevel/libtool-base)) && \ - defined(_OPSYS_MAX_CMDLEN_CMD) + defined(_OPSYS_MAX_CMDLEN_CMD) && \ + ${USE_CROSS_COMPILE:tl} != "yes" CONFIGURE_ENV+= lt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN_CMD:sh} .endif @@ -84,6 +85,7 @@ CONFIGURE_ARGS+= --libdir=${GNU_CONFIGURE_LIBDIR} .endif USE_GNU_CONFIGURE_HOST?= yes +USE_GNU_CONFIGURE_TARGET?= no # enable for toolchain packages .if !empty(USE_GNU_CONFIGURE_HOST:M[yY][eE][sS]) . if !empty(TOOLS_USE_CROSS_COMPILE:M[yY][eE][sS]) CONFIGURE_ARGS+= --build=${NATIVE_MACHINE_GNU_PLATFORM:Q} @@ -91,6 +93,9 @@ CONFIGURE_ARGS+= --build=${NATIVE_MACHINE_GNU_PLATFORM:Q} CONFIGURE_ARGS+= --build=${MACHINE_GNU_PLATFORM:Q} . endif CONFIGURE_ARGS+= --host=${MACHINE_GNU_PLATFORM:Q} +. if ${USE_GNU_CONFIGURE_TARGET:tl} == "yes" +CONFIGURE_ARGS+= --target=${TARGET_MACHINE_GNU_PLATFORM:Q} +. endif .endif # PKGINFODIR is the subdirectory of ${PREFIX} into which the info diff --git a/mk/curses.builtin.mk b/mk/curses.builtin.mk index 767cae750085..1fb9b379ba40 100644 --- a/mk/curses.builtin.mk +++ b/mk/curses.builtin.mk @@ -36,7 +36,8 @@ BUILTIN_FIND_GREP.H_CURSES_${defn}= ${defn} ### .if !defined(IS_BUILTIN.curses) IS_BUILTIN.curses= no -. if empty(H_CURSES:M${LOCALBASE}/*) && exists(${H_CURSES}) +. if empty(H_CURSES:M${LOCALBASE}/*) && \ + exists(${TOOLS_CROSS_DESTDIR}${H_CURSES}) IS_BUILTIN.curses= yes . endif .endif @@ -125,7 +126,7 @@ CHECK_BUILTIN.curses?= no .if !empty(CHECK_BUILTIN.curses:M[nN][oO]) . if !empty(USE_BUILTIN.curses:M[yY][eE][sS]) -. if exists(${H_CURSES}) +. if exists(${TOOLS_CROSS_DESTDIR}${H_CURSES}) BUILDLINK_INCDIRS.curses?= ${H_CURSES:H} . endif BUILDLINK_LIBNAME.curses= ${BUILTIN_LIBNAME.curses} diff --git a/mk/db1.builtin.mk b/mk/db1.builtin.mk index 1aae17f498fc..b3779df2bd3b 100644 --- a/mk/db1.builtin.mk +++ b/mk/db1.builtin.mk @@ -19,7 +19,7 @@ BUILTIN_FIND_GREP.H_DB= ^\#define.*HASHVERSION.*2$$ ### .if !defined(IS_BUILTIN.db1) IS_BUILTIN.db1= no -. if empty(H_DB:M${LOCALBASE}/*) && exists(${H_DB}) +. if empty(H_DB:M${LOCALBASE}/*) && exists(${TOOLS_CROSS_DESTDIR}${H_DB}) IS_BUILTIN.db1= yes . endif .endif @@ -65,7 +65,7 @@ CHECK_BUILTIN.db1?= no . if !empty(USE_BUILTIN.db1:M[yY][eE][sS]) BUILDLINK_PREFIX.db1= /usr -. if exists(${H_DB}) +. if exists(${TOOLS_CROSS_DESTDIR}${H_DB}) BUILDLINK_INCDIRS.db1?= ${H_DB:H:S/^${BUILDLINK_PREFIX.db1}\///} . endif . if !empty(BUILTIN_LIB_FOUND.db1:M[yY][eE][sS]) diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf index ff620ee298b5..88207049159b 100644 --- a/mk/defaults/mk.conf +++ b/mk/defaults/mk.conf @@ -524,10 +524,11 @@ RCD_SCRIPTS_DIR?= ${SYSCONFBASE}/rc.d # Possible: any path you like # Default: ${SYSCONFBASE}/rc.d -PACKAGES?= ${PKGSRCDIR}/packages +PACKAGES?= ${PKGSRCDIR}/packages${${USE_CROSS_COMPILE:tl} == "yes":?.${MACHINE_PLATFORM}:} # Stores generated packages # Possible: any path you like -# Default: ${PKGSRCDIR}/packages +# Default: ${PKGSRCDIR}/packages, or ${PKGSRCDIR}/packages.${MACHINE_PLATFORM} +# if cross-compiling. #PASSIVE_FETCH= # Use ftp(1) in passive mode, for use behind filtering firewalls. diff --git a/mk/dlopen.builtin.mk b/mk/dlopen.builtin.mk index 660a477447a9..8b32c2a1eb18 100644 --- a/mk/dlopen.builtin.mk +++ b/mk/dlopen.builtin.mk @@ -14,7 +14,7 @@ BUILTIN_FIND_HEADERS.H_DL= dlfcn.h ### .if !defined(IS_BUILTIN.dl) IS_BUILTIN.dl= no -. if empty(H_DL:M${LOCALBASE}/*) && exists(${H_DL}) +. if empty(H_DL:M${LOCALBASE}/*) && exists(${TOOLS_CROSS_DESTDIR}${H_DL}) IS_BUILTIN.dl= yes . endif .endif diff --git a/mk/fuse.buildlink3.mk b/mk/fuse.buildlink3.mk index f9a3d9ec52ff..3f8cbf545778 100644 --- a/mk/fuse.buildlink3.mk +++ b/mk/fuse.buildlink3.mk @@ -56,7 +56,7 @@ PKG_FAIL_REASON+= "Couldn't find fuse headers, please install libfuse." . elif ${OPSYS} == "NetBSD" || ${OPSYS} == "Minix" || \ !empty(MACHINE_PLATFORM:MDragonFly-[3-9]*-*) H_FUSE= /usr/include/fuse.h -. if !exists(${H_FUSE}) +. if !exists(${TOOLS_CROSS_DESTDIR}${H_FUSE}) PKG_FAIL_REASON+= "Couldn't find fuse headers, please install librefuse." . endif diff --git a/mk/pkgformat/pkg/depends.mk b/mk/pkgformat/pkg/depends.mk index ed4674e63279..f2625433eebb 100644 --- a/mk/pkgformat/pkg/depends.mk +++ b/mk/pkgformat/pkg/depends.mk @@ -90,6 +90,8 @@ _RESOLVE_DEPENDS_CMD= \ " "${BUILD_DEPENDS:Q} \ " "${DEPENDS:Q} +CROSSTARGETSETTINGS= ${CROSSVARS:@_v_@TARGET_${_v_}=${${_v_}}@} + # _DEPENDS_INSTALL_CMD checks whether the package $pattern is installed, # and installs it if necessary. # @@ -110,17 +112,20 @@ _DEPENDS_INSTALL_CMD= \ case $$type in \ bootstrap|tool) \ case "${USE_CROSS_COMPILE:Uno:tl}" in \ - yes) extradep="" ;; \ - *) extradep=" ${PKGNAME}" ;; \ + yes) extradep=""; \ + crosstargetsettings=${CROSSTARGETSETTINGS:Q}; \ + ;; \ + *) extradep=" ${PKGNAME}"; \ + crosstargetsettings=; \ + ;; \ esac; \ cross=no; \ - archopt=TARGET_ARCH=${MACHINE_ARCH}; \ pkg=`${_HOST_PKG_BEST_EXISTS} "$$pattern" || ${TRUE}`; \ ;; \ - build|test|full) \ + build|test|full) \ extradep=" ${PKGNAME}"; \ + crosstargetsettings=; \ cross=${USE_CROSS_COMPILE:Uno}; \ - archopt=; \ pkg=`${_PKG_BEST_EXISTS} "$$pattern" || ${TRUE}`; \ ;; \ esac; \ @@ -133,11 +138,12 @@ _DEPENDS_INSTALL_CMD= \ cd $$dir; \ unset _PKGSRC_BARRIER; \ unset MAKEFLAGS; \ + unset ${CROSSVARS:@_v_@TARGET_${_v_}@}; \ ${PKGSRC_SETENV} ${PKGSRC_MAKE_ENV} PATH=${_PATH_ORIG:Q}\ _PKGSRC_DEPS="$$extradep${_PKGSRC_DEPS}" \ PKGNAME_REQD="$$pattern" \ USE_CROSS_COMPILE=$$cross \ - $$archopt \ + $$crosstargetsettings \ ${MAKE} ${MAKEFLAGS} _AUTOMATIC=yes $$target; \ case $$type in \ bootstrap|tool) \ @@ -156,16 +162,18 @@ _DEPENDS_INSTALL_CMD= \ *) \ case $$type in \ bootstrap|tool) \ - objfmt=`${HOST_PKG_INFO} -Q OBJECT_FMT "$$pkg"`;; \ + objfmt=`${HOST_PKG_INFO} -Q OBJECT_FMT "$$pkg"`; \ + needobjfmt=${NATIVE_OBJECT_FMT:Q};; \ build|test|full) \ - objfmt=`${PKG_INFO} -Q OBJECT_FMT "$$pkg"`;; \ + objfmt=`${PKG_INFO} -Q OBJECT_FMT "$$pkg"`; \ + needobjfmt=${OBJECT_FMT:Q};; \ esac; \ case "$$objfmt" in \ "") ${WARNING_MSG} "[depends.mk] Unknown object format for installed package $$pkg" ;; \ - ${OBJECT_FMT}) ;; \ + $$needobjfmt) ;; \ *) ${ERROR_MSG} "[depends.mk] Installed package $$pkg has an"; \ - ${ERROR_MSG} " object format \`\`$$objfmt'' which differs from \`\`${OBJECT_FMT}''. Please"; \ - ${ERROR_MSG} " update the $$pkg package to ${OBJECT_FMT}."; \ + ${ERROR_MSG} " object format \`\`$$objfmt'' which differs from \`\`$$needobjfmt''. Please"; \ + ${ERROR_MSG} " update the $$pkg package to $$needobjfmt."; \ exit 1; \ ;; \ esac; \ @@ -217,12 +225,17 @@ _pkgformat-post-install-dependencies: .PHONY ${_RDEPENDS_FILE} ${_RRDEPENDS_FILE pkg_install-depends: ${RUN}if [ `${PKG_INFO_CMD} -V 2>/dev/null || echo 20010302` -lt ${PKGTOOLS_REQD} ]; then \ ${PHASE_MSG} "Trying to handle out-dated pkg_install..."; \ + unset _PKGSRC_BARRIER; \ + unset MAKEFLAGS; \ + unset ${CROSSVARS:@_v_@TARGET_${_v_}@}; \ cd ../../pkgtools/pkg_install && ${PKGSRC_SETENV} ${PKGSRC_MAKE_ENV} \ _PKGSRC_DEPS=" ${PKGNAME}${_PKGSRC_DEPS}" \ - ${MAKE} ${MAKEFLAGS} _AUTOMATIC=yes clean && \ + ${MAKE} ${MAKEFLAGS} _AUTOMATIC=yes USE_CROSS_COMPILE=no \ + clean && \ cd ../../pkgtools/pkg_install && ${PKGSRC_SETENV} ${PKGSRC_MAKE_ENV} \ _PKGSRC_DEPS=" ${PKGNAME}${_PKGSRC_DEPS}" \ - ${MAKE} ${MAKEFLAGS} _AUTOMATIC=yes ${DEPENDS_TARGET:Q}; \ + ${MAKE} ${MAKEFLAGS} _AUTOMATIC=yes USE_CROSS_COMPILE=no \ + ${DEPENDS_TARGET:Q}; \ fi ###################################################################### diff --git a/mk/pkgformat/pkg/package.mk b/mk/pkgformat/pkg/package.mk index c6be0267326a..924a82dbc499 100644 --- a/mk/pkgformat/pkg/package.mk +++ b/mk/pkgformat/pkg/package.mk @@ -150,7 +150,7 @@ su-real-package-install: @${PHASE_MSG} "Installing binary package of "${PKGNAME:Q} .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) @${MKDIR} ${_CROSS_DESTDIR}${PREFIX} - ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -m ${MACHINE_ARCH} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE} + ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -m ${OPSYS:Q}/${MACHINE_ARCH:Q}\ ${OS_VERSION:Q} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE} @${ECHO} "Fixing recorded cwd..." @${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp @${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS diff --git a/mk/pkgformat/pkg/pkgformat-vars.mk b/mk/pkgformat/pkg/pkgformat-vars.mk index 19a3020c1722..e222c57f6adb 100644 --- a/mk/pkgformat/pkg/pkgformat-vars.mk +++ b/mk/pkgformat/pkg/pkgformat-vars.mk @@ -16,7 +16,21 @@ USE_TOOLS+= date .endif # This is the package database directory for the default view. +.if ${USE_CROSS_COMPILE:tl} != "yes" PKG_DBDIR?= ${LOCALBASE}/pkgdb +.else +. ifndef HOST_PKG_DBDIR +# XXX This isn't quite right: if PKG_DBDIR is defined in terms of +# LOCALBASE, we really want to resolve it (`HOST_PKG_DBDIR:=') in +# bsd.prefs.mk before we switch LOCALBASE to CROSS_LOCALBASE. But +# there's no place there to put pkgformat-vars business. Fortunately, +# bootstrap just writes out the full path so this is only an issue if +# you explicitly write out `PKG_DBDIR= ...${LOCALBASE}...' in your +# mk.conf. +HOST_PKG_DBDIR:= ${PKG_DBDIR:U${TOOLBASE}/pkgdb} +. endif +PKG_DBDIR= ${CROSS_PKG_DBDIR:U${LOCALBASE}/pkgdb} +.endif # _PKG_DBDIR is the actual packages database directory where we register # packages. @@ -40,7 +54,9 @@ NATIVE_PKG_INFO_CMD?= ${NATIVE_PKG_TOOLS_BIN}/pkg_info NATIVE_LINKFARM_CMD?= ${NATIVE_PKG_TOOLS_BIN}/linkfarm # Latest versions of tools required for correct pkgsrc operation. -.if !empty(USE_PKG_ADMIN_DIGEST:M[Yy][Ee][Ss]) +.if ${USE_CROSS_COMPILE:tl} == "yes" +PKGTOOLS_REQD= 20230629 +.elif !empty(USE_PKG_ADMIN_DIGEST:M[Yy][Ee][Ss]) PKGTOOLS_REQD= 20191008 .else PKGTOOLS_REQD= 20100914 diff --git a/mk/platform/NetBSD.mk b/mk/platform/NetBSD.mk index a5e8e48fb6e8..ba9c954a4f66 100644 --- a/mk/platform/NetBSD.mk +++ b/mk/platform/NetBSD.mk @@ -35,7 +35,11 @@ NOLOGIN?= /sbin/nologin # This must be lazy and using :? evaluation doesn't work due to a make bugs. NATIVE_PKG_TOOLS_BIN_cmd= if [ -x ${TOOLBASE}/sbin/pkg_info ]; then echo ${TOOLBASE}/sbin; else echo /usr/sbin; fi NATIVE_PKG_TOOLS_BIN?= ${NATIVE_PKG_TOOLS_BIN_cmd:sh} -PKG_TOOLS_BIN?= ${"${USE_CROSS_COMPILE:U:tl}" == "yes":?${CROSS_PKG_TOOLS_BIN:U/usr/sbin}:${NATIVE_PKG_TOOLS_BIN}} +.if ${USE_CROSS_COMPILE:tl} == "yes" +PKG_TOOLS_BIN= ${CROSS_PKG_TOOLS_BIN:U/usr/sbin} +.else +PKG_TOOLS_BIN?= ${NATIVE_PKG_TOOLS_BIN} +.endif ROOT_CMD?= ${SU} - root -c ROOT_USER?= root ROOT_GROUP?= wheel diff --git a/mk/pthread.builtin.mk b/mk/pthread.builtin.mk index 9b9183884418..4d094f5cb382 100644 --- a/mk/pthread.builtin.mk +++ b/mk/pthread.builtin.mk @@ -14,7 +14,8 @@ BUILTIN_FIND_HEADERS.H_PTHREAD= pthread.h ### .if !defined(IS_BUILTIN.pthread) IS_BUILTIN.pthread= no -. if empty(H_PTHREAD:M${LOCALBASE}/*) && exists(${H_PTHREAD}) +. if empty(H_PTHREAD:M${LOCALBASE}/*) && \ + exists(${TOOLS_CROSS_DESTDIR}${H_PTHREAD}) IS_BUILTIN.pthread= yes . endif .endif diff --git a/mk/solaris-pam.builtin.mk b/mk/solaris-pam.builtin.mk index 48e47f696c55..3d5c4d8f05f9 100644 --- a/mk/solaris-pam.builtin.mk +++ b/mk/solaris-pam.builtin.mk @@ -14,7 +14,8 @@ BUILTIN_FIND_GREP.H_SOLARIS_PAM= Copyright.*Sun Microsystems ### .if !defined(IS_BUILTIN.solaris-pam) IS_BUILTIN.solaris-pam= no -. if empty(H_SOLARIS_PAM:M${LOCALBASE}/*) && exists(${H_SOLARIS_PAM}) +. if empty(H_SOLARIS_PAM:M${LOCALBASE}/*) && \ + exists(${TOOLS_CROSS_DESTDIR}${H_SOLARIS_PAM}) IS_BUILTIN.solaris-pam= yes . endif .endif diff --git a/mk/tools/cross.NetBSD.mk b/mk/tools/cross.NetBSD.mk new file mode 100644 index 000000000000..df739ba84035 --- /dev/null +++ b/mk/tools/cross.NetBSD.mk @@ -0,0 +1,25 @@ +# $NetBSD$ +# +# Cross-compiler toolchain for the NetBSD operating system. Requires +# TOOLDIR to match build.sh for a NetBSD build. + +TOOLS_PLATFORM.install?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-install +TOOLS_PLATFORM.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf +TOOLS_PLATFORM.strip?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-strip + +.for _t_ in ar as ld nm objcopy objdump ranlib readelf strip +TOOLS_PATH.${MACHINE_GNU_PLATFORM}-${_t_}?= \ + ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-${_t_} +TOOLS_CREATE+= ${MACHINE_GNU_PLATFORM}-${_t_} +.endfor + +TOOLS_PATH.ar?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ar +TOOLS_CREATE+= ar +TOOLS_PATH.ranlib?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ranlib +TOOLS_CREATE+= ranlib +TOOLS_PATH.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf +TOOLS_CREATE+= readelf + +CC= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc +CXX= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-g++ +LD= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld diff --git a/mk/tools/defaults.mk b/mk/tools/defaults.mk index 5b49c4224d72..51d956f1ae81 100644 --- a/mk/tools/defaults.mk +++ b/mk/tools/defaults.mk @@ -34,10 +34,17 @@ TOOLS_DEFAULTS_MK= defined # These are the platform-specific lists of system-supplied tools. # # XXX These should eventually just migrate over to the appropriate -# XXX pkgsrc/mk/platform/${OPSYS}.mk file. +# XXX pkgsrc/mk/platform/${NATIVE_OPSYS}.mk file. # -.if exists(${_PKGSRC_TOPDIR}/mk/tools/tools.${OPSYS}.mk) -. include "${_PKGSRC_TOPDIR}/mk/tools/tools.${OPSYS}.mk" +# XXX Use ${OPSYS} for :run tools, but ${NATIVE_OPSYS} for :build and +# XXX :bootstrap tools. +# +.if ${TOOLS_USE_CROSS_COMPILE:tl} == "yes" && \ + exists(${_PKGSRC_TOPDIR}/mk/tools/cross.${OPSYS}.mk) +. include "${_PKGSRC_TOPDIR}/mk/tools/cross.${OPSYS}.mk" +.endif +.if exists(${_PKGSRC_TOPDIR}/mk/tools/tools.${NATIVE_OPSYS}.mk) +. include "${_PKGSRC_TOPDIR}/mk/tools/tools.${NATIVE_OPSYS}.mk" .endif ###################################################################### diff --git a/mk/tools/replace.mk b/mk/tools/replace.mk index 133ad8ed54f4..25c1591f8450 100644 --- a/mk/tools/replace.mk +++ b/mk/tools/replace.mk @@ -133,6 +133,9 @@ _TOOLS_DEPMETHOD.${_t_:C/:.*//}= BOOTSTRAP_DEPENDS _TOOLS_DEPMETHOD.${_t_:C/:.*//}= TOOL_DEPENDS .endfor .for _t_ in ${USE_TOOLS:M*\:run} +. if ${USE_CROSS_COMPILE:tl} == "yes" && ${OPSYS} != ${NATIVE_OPSYS} +PKG_FAIL_REASON+= "USE_TOOLS+=${_t_} not supported in cross-compilation" +. endif _TOOLS_DEPMETHOD.${_t_:C/:.*//}= DEPENDS .endfor .for _t_ in ${USE_TOOLS:M*\:test} diff --git a/mk/tools/tools.NetBSD.mk b/mk/tools/tools.NetBSD.mk index 2d4de5afe264..387367f36531 100644 --- a/mk/tools/tools.NetBSD.mk +++ b/mk/tools/tools.NetBSD.mk @@ -58,11 +58,7 @@ TOOLS_PLATFORM.head?= /usr/bin/head TOOLS_PLATFORM.hostname?= /bin/hostname TOOLS_PLATFORM.id?= /usr/bin/id TOOLS_PLATFORM.ident?= /usr/bin/ident -.if ${TOOLS_USE_CROSS_COMPILE:tl} != yes TOOLS_PLATFORM.install?= /usr/bin/install -.else -TOOLS_PLATFORM.install?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-install -.endif .if exists(/usr/bin/install-info) TOOLS_PLATFORM.install-info?= /usr/bin/install-info .endif @@ -102,11 +98,7 @@ TOOLS_PLATFORM.paxctl?= /usr/sbin/paxctl .endif TOOLS_PLATFORM.printf?= /usr/bin/printf TOOLS_PLATFORM.pwd?= /bin/pwd -.if ${TOOLS_USE_CROSS_COMPILE:U:tl} != yes TOOLS_PLATFORM.readelf?= /usr/bin/readelf -.else -TOOLS_PLATFORM.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf -.endif TOOLS_PLATFORM.readlink?= /usr/bin/readlink .if exists(/usr/bin/realpath) TOOLS_PLATFORM.realpath?= /usr/bin/realpath @@ -120,11 +112,7 @@ TOOLS_PLATFORM.shlock?= /usr/bin/shlock TOOLS_PLATFORM.sleep?= /bin/sleep TOOLS_PLATFORM.soelim?= /usr/bin/soelim TOOLS_PLATFORM.sort?= /usr/bin/sort -.if ${TOOLS_USE_CROSS_COMPILE:U:tl} != yes TOOLS_PLATFORM.strip?= /usr/bin/strip -.else -TOOLS_PLATFORM.strip?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-strip -.endif TOOLS_PLATFORM.tail?= /usr/bin/tail .if exists(/bin/tar) @@ -157,29 +145,9 @@ TOOLS_PLATFORM.xzcat?= /usr/bin/xzcat TOOLS_PLATFORM.yacc?= /usr/bin/yacc .if ${TOOLS_USE_CROSS_COMPILE:U:tl} == yes -. for _t_ in ar as ld nm objcopy objdump ranlib readelf strip -TOOLS_PATH.${MACHINE_GNU_PLATFORM}-${_t_}?= \ - ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-${_t_} -TOOLS_CREATE+= ${MACHINE_GNU_PLATFORM}-${_t_} -. endfor - -TOOLS_PATH.ar?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ar -TOOLS_CREATE+= ar -TOOLS_PATH.ranlib?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ranlib -TOOLS_CREATE+= ranlib -TOOLS_PATH.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf -TOOLS_CREATE+= readelf - NATIVE_CC:= /usr/bin/cc -B /usr/libexec -B /usr/bin -CC= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc - NATIVE_CXX:= /usr/bin/c++ -B /usr/libexec -B /usr/bin -CXX= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-g++ - NATIVE_LD:= /usr/bin/ld -LD= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld - NATIVE_AR:= /usr/bin/ar NATIVE_RANLIB:= /usr/bin/ranlib - .endif diff --git a/net/bind916/builtin.mk b/net/bind916/builtin.mk index a33e12d84270..63c4f38d4628 100644 --- a/net/bind916/builtin.mk +++ b/net/bind916/builtin.mk @@ -12,7 +12,12 @@ BUILTIN_FIND_LIBS:= bind ### Figure out the version of BIND if an ISC BIND named exists on the ### system. ### -.if !defined(BUILTIN_VERSION.bind) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_VERSION.bind) && \ empty(EXE_NAMED:M__nonexistent__) && \ empty(EXE_NAMED:M${LOCALBASE}/*) BUILTIN_VERSION.bind!= \ diff --git a/net/bind918/builtin.mk b/net/bind918/builtin.mk index dc68b9043dd6..7ca49772fb6c 100644 --- a/net/bind918/builtin.mk +++ b/net/bind918/builtin.mk @@ -12,7 +12,12 @@ BUILTIN_FIND_LIBS:= bind ### Figure out the version of BIND if an ISC BIND named exists on the ### system. ### -.if !defined(BUILTIN_VERSION.bind) && \ +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +### +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_VERSION.bind) && \ empty(EXE_NAMED:M__nonexistent__) && \ empty(EXE_NAMED:M${LOCALBASE}/*) BUILTIN_VERSION.bind!= \ diff --git a/net/net-snmp/builtin.mk b/net/net-snmp/builtin.mk index 8ee83886d276..c6e9fb8740a4 100644 --- a/net/net-snmp/builtin.mk +++ b/net/net-snmp/builtin.mk @@ -32,7 +32,7 @@ BUILTIN_VERSION.net-snmp!= \ gsub("\"", "", vers); \ print vers; \ } \ - ' ${H_NETSNMP:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_NETSNMP:Q} BUILTIN_PKG.net-snmp= net-snmp-${BUILTIN_VERSION.net-snmp} .endif MAKEVARS+= BUILTIN_PKG.net-snmp diff --git a/pkgtools/pkg_install/files/add/Makefile.in b/pkgtools/pkg_install/files/add/Makefile.in index 1bd11c421778..614dbaf5fdf6 100644 --- a/pkgtools/pkg_install/files/add/Makefile.in +++ b/pkgtools/pkg_install/files/add/Makefile.in @@ -37,7 +37,7 @@ INSTALL= @INSTALL@ PROG= pkg_add -OBJS= main.o perform.o +OBJS= main.o parse_cross.o perform.o all: $(PROG) diff --git a/pkgtools/pkg_install/files/add/add.h b/pkgtools/pkg_install/files/add/add.h index a55f40bb580f..e483f20e2c99 100644 --- a/pkgtools/pkg_install/files/add/add.h +++ b/pkgtools/pkg_install/files/add/add.h @@ -27,6 +27,8 @@ extern char *Destdir; extern char *OverrideMachine; +extern char *OverrideOpsys; +extern char *OverrideOSVersion; extern char *Prefix; extern char *View; extern char *Viewbase; @@ -42,6 +44,8 @@ extern int ReplaceSame; extern Boolean ForceDepends; extern Boolean ForceDepending; +void parse_cross(const char *, char **, char **, char **); + int make_hierarchy(char *); void apply_perms(char *, char **, int); diff --git a/pkgtools/pkg_install/files/add/main.c b/pkgtools/pkg_install/files/add/main.c index bec606923320..3c95260f3150 100644 --- a/pkgtools/pkg_install/files/add/main.c +++ b/pkgtools/pkg_install/files/add/main.c @@ -40,6 +40,8 @@ static char Options[] = "AC:DIK:P:RVfhm:np:t:Uuv"; char *Destdir = NULL; char *OverrideMachine = NULL; +char *OverrideOpsys = NULL; +char *OverrideOSVersion = NULL; char *Prefix = NULL; Boolean NoInstall = FALSE; Boolean NoRecord = FALSE; @@ -110,7 +112,8 @@ main(int argc, char **argv) break; case 'm': - OverrideMachine = optarg; + parse_cross(optarg, &OverrideMachine, &OverrideOpsys, + &OverrideOSVersion); break; case 'n': diff --git a/pkgtools/pkg_install/files/add/parse_cross.c b/pkgtools/pkg_install/files/add/parse_cross.c new file mode 100644 index 000000000000..1026ade8b4ba --- /dev/null +++ b/pkgtools/pkg_install/files/add/parse_cross.c @@ -0,0 +1,97 @@ +/* $NetBSD$ */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif +#include +#if HAVE_SYS_CDEFS_H +#include +#endif +__RCSID("$NetBSD$"); + +#include "lib.h" +#include "add.h" + +/* + * ${OPSYS}/${MACHINE_ARCH} ${OS_VERSION} + * + * or just + * + * ${MACHINE_ARCH} + */ +void +parse_cross(const char *text, char **machine_arch, char **opsys, + char **os_version) +{ + static const char safeset[] = /* XXX */ + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "-._"; + char *copy = xstrdup(text); + char *p = copy, *q, *r; + + /* + * If there's no /, treat it as a single MACHINE_ARCH. + */ + if (*(q = strchr(p, '/')) == '\0') { + *machine_arch = copy; + *opsys = NULL; + *os_version = NULL; + } else { + /* + * NUL-terminate at the slash so p := text[0..slash) + * is the OPSYS. + */ + *q++ = '\0'; + + /* + * If there's no SPC, fail. + */ + if (*(r = strchr(q, ' ')) == '\0') { + goto fail; + } + + /* + * NUL-terminate at the space so + * + * q := text(slash..space) + * + * is the MACHINE_ARCH. + */ + *r++ = '\0'; + + /* + * The rest is already NUL-terminated, so + * + * r := text(space..NUL) + * + * is the OS_VERSION. + */ + *opsys = p; + *machine_arch = q; + *os_version = r; + } + + /* + * Verify that MACHINE_ARCH, and, if specified, OPSYS and + * OS_VERSION lie within the safe set, so we can reserve large + * amounts of the space of inputs for additional syntax. + * Ideally we would impose more constraints here with a + * regular expression to restrict the space even more, but + * this'll do for now. + */ + if ((*machine_arch)[strspn(*machine_arch, safeset)] != '\0') { + goto fail; + } + if (*opsys != NULL && (*opsys)[strspn(*opsys, safeset)] != '\0') { + goto fail; + } + if (*os_version != NULL && + (*os_version)[strspn(*os_version, safeset)] != '\0') { + goto fail; + } + return; + +fail: errx(1, "Invalid -m argument: ${OPSYS}/${MACHINE_ARCH} ${OS_VERSION}"); +} diff --git a/pkgtools/pkg_install/files/add/perform.c b/pkgtools/pkg_install/files/add/perform.c index 65e20c554266..fb95ded6acc6 100644 --- a/pkgtools/pkg_install/files/add/perform.c +++ b/pkgtools/pkg_install/files/add/perform.c @@ -893,19 +893,28 @@ check_platform(struct pkg_task *pkg) { struct utsname host_uname; const char *effective_arch; + const char *effective_opsys; + const char *effective_os_version; int fatal; - if (uname(&host_uname) < 0) { - if (Force) { - warnx("uname() failed, continuing."); - return 0; - } else { - warnx("uname() failed, aborting."); - return -1; + if (OverrideOpsys != NULL && OverrideOSVersion != NULL) { + effective_opsys = OverrideOpsys; + effective_os_version = OverrideOSVersion; + } else { + if (uname(&host_uname) < 0) { + if (Force) { + warnx("uname() failed, continuing."); + return 0; + } else { + warnx("uname() failed, aborting."); + return -1; + } } - } - normalise_platform(&host_uname); + normalise_platform(&host_uname); + effective_opsys = OPSYS_NAME; + effective_os_version = host_uname.release; + } if (OverrideMachine != NULL) effective_arch = OverrideMachine; @@ -913,14 +922,14 @@ check_platform(struct pkg_task *pkg) effective_arch = PKGSRC_MACHINE_ARCH; /* If either the OS or arch are different, bomb */ - if (strcmp(OPSYS_NAME, pkg->buildinfo[BI_OPSYS]) || + if (strcmp(effective_opsys, pkg->buildinfo[BI_OPSYS]) || strcmp(effective_arch, pkg->buildinfo[BI_MACHINE_ARCH]) != 0) fatal = 1; else fatal = 0; if (fatal || - compatible_platform(OPSYS_NAME, host_uname.release, + compatible_platform(effective_opsys, effective_os_version, pkg->buildinfo[BI_OS_VERSION]) != 1) { warnx("Warning: package `%s' was built for a platform:", pkg->pkgname); @@ -928,9 +937,9 @@ check_platform(struct pkg_task *pkg) pkg->buildinfo[BI_OPSYS], pkg->buildinfo[BI_MACHINE_ARCH], pkg->buildinfo[BI_OS_VERSION], - OPSYS_NAME, + effective_opsys, effective_arch, - host_uname.release); + effective_os_version); if (!Force && fatal) return -1; } diff --git a/pkgtools/pkg_install/files/lib/version.h b/pkgtools/pkg_install/files/lib/version.h index 9bd3ab0a0def..52ce96b5cc61 100644 --- a/pkgtools/pkg_install/files/lib/version.h +++ b/pkgtools/pkg_install/files/lib/version.h @@ -27,6 +27,6 @@ #ifndef _INST_LIB_VERSION_H_ #define _INST_LIB_VERSION_H_ -#define PKGTOOLS_VERSION 20211115 +#define PKGTOOLS_VERSION 20230629 #endif /* _INST_LIB_VERSION_H_ */ diff --git a/security/heimdal/builtin.mk b/security/heimdal/builtin.mk index a2b397ed281e..07f524df70cc 100644 --- a/security/heimdal/builtin.mk +++ b/security/heimdal/builtin.mk @@ -30,8 +30,9 @@ MAKEVARS+= IS_BUILTIN.heimdal .if !defined(BUILTIN_PKG.heimdal) && \ ${IS_BUILTIN.heimdal:tl} == yes . if empty(SH_KRB5_CONFIG:M__nonexistent__) -BUILTIN_VERSION.heimdal!= ${SH_KRB5_CONFIG} --version | \ - ${AWK} '{ print $$2; exit }' +BUILTIN_VERSION.heimdal!= \ + ${_CROSS_DESTDIR:U:Q}${SH_KRB5_CONFIG:Q} --version | \ + ${AWK} '{ print $$2; exit }' . else # # heimdal<=0.6.x doesn't have a method of checking files to discover @@ -108,7 +109,7 @@ CHECK_BUILTIN.heimdal?= no . if ${USE_BUILTIN.heimdal:tl} == no BUILDLINK_API_DEPENDS.heimdal+= heimdal>=0.6 -KRB5_CONFIG?= ${BUILDLINK_PREFIX.heimdal}/bin/krb5-config +KRB5_CONFIG?= ${_CROSS_DESTDIR:U}${BUILDLINK_PREFIX.heimdal}/bin/krb5-config CONFIGURE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} MAKE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} . endif @@ -128,7 +129,7 @@ fake-krb5-config: KRB5_CONFIG?= ${BUILDLINK_DIR}/bin/krb5-config . else -KRB5_CONFIG?= ${SH_KRB5_CONFIG} +KRB5_CONFIG?= ${_CROSS_DESTDIR:U}${SH_KRB5_CONFIG} . endif CONFIGURE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} MAKE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} diff --git a/security/mit-krb5/builtin.mk b/security/mit-krb5/builtin.mk index ac460eaa09ce..0358c78c2937 100644 --- a/security/mit-krb5/builtin.mk +++ b/security/mit-krb5/builtin.mk @@ -43,8 +43,9 @@ MAKEVARS+= IS_BUILTIN.mit-krb5 .if !defined(BUILTIN_PKG.mit-krb5) && \ ${IS_BUILTIN.mit-krb5:tl} == yes . if empty(SH_KRB5_CONFIG:M__nonexistent__) -BUILTIN_VERSION.mit-krb5!= ${SH_KRB5_CONFIG} --version | \ - ${SED} -e 's/.*release //' -e 's/-.*//' -e 's/).*//' +BUILTIN_VERSION.mit-krb5!= \ + ${_CROSS_DESTDIR:U:Q}${SH_KRB5_CONFIG:Q} --version | \ + ${SED} -e 's/.*release //' -e 's/-.*//' -e 's/).*//' . endif BUILTIN_VERSION.mit-krb5?= 1.4.0 BUILTIN_PKG.mit-krb5= mit-krb5-${BUILTIN_VERSION.mit-krb5} @@ -85,11 +86,11 @@ MAKEVARS+= USE_BUILTIN.mit-krb5 CHECK_BUILTIN.mit-krb5?= no .if ${CHECK_BUILTIN.mit-krb5:tl} == no . if ${USE_BUILTIN.mit-krb5:tl} == yes -KRB5_CONFIG?= ${SH_KRB5_CONFIG} +KRB5_CONFIG?= ${_CROSS_DESTDIR:U}${SH_KRB5_CONFIG} ALL_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} -BUILDLINK_CPPFLAGS.mit-krb5!= ${SH_KRB5_CONFIG} --cflags -BUILDLINK_LDFLAGS.mit-krb5!= ${SH_KRB5_CONFIG} --libs +BUILDLINK_CPPFLAGS.mit-krb5!= ${_CROSS_DESTDIR:U:Q}${SH_KRB5_CONFIG:Q} --cflags +BUILDLINK_LDFLAGS.mit-krb5!= ${_CROSS_DESTDIR:U:Q}${SH_KRB5_CONFIG:Q} --libs # # The SunOS builtin krb5-config does not support all of the arguments that the @@ -109,14 +110,14 @@ fake-krb5-config: if [ ! -f $${dst} ]; then \ ${ECHO_BUILDLINK_MSG} "Creating $${dst}"; \ ${ECHO} "#!${SH}" > $${dst}; \ - ${SED} -e "s,@KRB5_CONFIG@,${SH_KRB5_CONFIG:Q},g" \ + ${SED} -e s,@KRB5_CONFIG@,${_CROSS_DESTDIR:U:Q}${SH_KRB5_CONFIG:Q},g \ $${src} >> $${dst}; \ ${CHMOD} +x $${dst}; \ fi . endif . else -KRB5_CONFIG?= ${BUILDLINK_PREFIX.mit-krb5}/bin/krb5-config +KRB5_CONFIG?= ${_CROSS_DESTDIR:U}${BUILDLINK_PREFIX.mit-krb5}/bin/krb5-config CONFIGURE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} MAKE_ENV+= KRB5_CONFIG=${KRB5_CONFIG:Q} . endif diff --git a/security/openpam/builtin.mk b/security/openpam/builtin.mk index 22fc7c1f31b6..dfd1fb8e52cf 100644 --- a/security/openpam/builtin.mk +++ b/security/openpam/builtin.mk @@ -28,7 +28,7 @@ MAKEVARS+= IS_BUILTIN.openpam empty(H_OPENPAM:M__nonexistent__) BUILTIN_VERSION.openpam!= \ ${AWK} '/\#define[ ]*_?OPENPAM_VERSION[ ]/ {print $$3; }' \ - ${H_OPENPAM} + ${_CROSS_DESTDIR:U:Q}${H_OPENPAM:Q} BUILTIN_PKG.openpam= openpam-${BUILTIN_VERSION.openpam} .endif MAKEVARS+= BUILTIN_PKG.openpam diff --git a/security/openssl/builtin.mk b/security/openssl/builtin.mk index 2f2d63582942..e27081b7b0a7 100644 --- a/security/openssl/builtin.mk +++ b/security/openssl/builtin.mk @@ -58,7 +58,7 @@ BUILTIN_VERSION.openssl!= \ major, minor, teeny, patchlevel; \ exit 0; \ } \ - ' ${H_OPENSSLV} + ' ${_CROSS_DESTDIR:U:Q}${H_OPENSSLV:Q} BUILTIN_PKG.openssl= openssl-${BUILTIN_VERSION.openssl} .endif MAKEVARS+= BUILTIN_PKG.openssl @@ -72,7 +72,7 @@ BUILTIN_OPENSSL_HAS_THREADS!= \ /\#[ ]*define[ ]*OPENSSL_THREADS/ { ans= "yes" } \ /\#[ ]*define[ ]*THREADS/ { ans = "yes" } \ END { print ans; exit 0 } \ - ' ${H_OPENSSLCONF:Q} + ' ${_CROSS_DESTDIR:U:Q}${H_OPENSSLCONF:Q} .endif MAKEVARS+= BUILTIN_OPENSSL_HAS_THREADS @@ -143,7 +143,7 @@ SSLDIR= ${PKG_SYSCONFDIR.openssl} . if ${OPSYS} == "NetBSD" SSLDIR= /etc/openssl . elif ${OPSYS} == "Linux" -. if exists(/etc/pki/tls) +. if exists(${_CROSS_DESTDIR:U}/etc/pki/tls) # Some distributions have moved to /etc/pki/tls, with incomplete # symlinks from /etc/ssl. Prefer the new location if it exists SSLDIR= /etc/pki/tls @@ -151,7 +151,7 @@ SSLDIR= /etc/pki/tls SSLDIR= /etc/ssl # standard location . endif . elif ${OPSYS} == "Haiku" -. if exists(/boot/system/data/ssl) +. if exists(${_CROSS_DESTDIR:U}/boot/system/data/ssl) SSLDIR= /boot/system/data/ssl . else SSLDIR= /boot/common/data/ssl @@ -168,7 +168,7 @@ SSLCERTS= ${SSLDIR}/certs # Continue to define SSLCERTS because it's unclear if that's the # directory that has one file per cert, or the directory that contains # trust anchor config in some fortm. -. if exists(${SSLDIR}/certs/ca-bundle.crt) +. if exists(${_CROSS_DESTDIR:U}${SSLDIR}/certs/ca-bundle.crt) SSLCERTBUNDLE= ${SSLDIR}/certs/ca-bundle.crt . endif SSLKEYS= ${SSLDIR}/private diff --git a/sysutils/file/builtin.mk b/sysutils/file/builtin.mk index 2c0bbd9808e2..94673c0bf3c0 100644 --- a/sysutils/file/builtin.mk +++ b/sysutils/file/builtin.mk @@ -27,7 +27,12 @@ BUILTIN_CMD.file= file .endif MAKEVARS+= IS_BUILTIN.file -.if !defined(BUILTIN_PKG.file) && !empty(IS_BUILTIN.file:M[yY][eE][sS]) +### XXX This doesn't work for cross-compilation because we can't +### execute the target system's program. Can the version be discovered +### any other way? +.if ${USE_CROSS_COMPILE:tl} != "yes" && \ + !defined(BUILTIN_PKG.file) && \ + !empty(IS_BUILTIN.file:M[yY][eE][sS]) BUILTIN_VERSION.file!= ${BUILTIN_CMD.file} --version 2>&1 | ${GREP} 'file-' | ${SED} 's/file-//' BUILTIN_PKG.file= file-${BUILTIN_VERSION.file} .endif diff --git a/textproc/expat/builtin.mk b/textproc/expat/builtin.mk index fd5569ad1472..541e3264446e 100644 --- a/textproc/expat/builtin.mk +++ b/textproc/expat/builtin.mk @@ -32,7 +32,7 @@ BUILTIN_VERSION.expat!= \ /\#define[ ]*XML_MINOR_VERSION/ { m = "."$$3 } \ /\#define[ ]*XML_MICRO_VERSION/ { u = "."$$3 } \ END { printf "%s%s%s\n", M, m, u }' \ - ${H_EXPAT} + ${_CROSS_DESTDIR:U:Q}${H_EXPAT:Q} BUILTIN_PKG.expat= expat-${BUILTIN_VERSION.expat} .endif MAKEVARS+= BUILTIN_PKG.expat diff --git a/x11/libXft/builtin.mk b/x11/libXft/builtin.mk index e41e294f2580..a1acd1c669bf 100644 --- a/x11/libXft/builtin.mk +++ b/x11/libXft/builtin.mk @@ -37,7 +37,7 @@ BUILTIN_VERSION.libXft!= \ /\#define[ ]*XFT_MINOR/ { m = "."$$3 } \ /\#define[ ]*XFT_REVISION/ { r = "."$$3 } \ END { printf "%s%s%s\n", M, m, r }' \ - ${H_XFT2} + ${_CROSS_DESTDIR:U:Q}${H_XFT2:Q} BUILTIN_PKG.libXft= libXft-${BUILTIN_VERSION.libXft} .endif MAKEVARS+= BUILTIN_PKG.libXft diff --git a/x11/xcursor/builtin.mk b/x11/xcursor/builtin.mk index 21a0521306db..2caa61b19193 100644 --- a/x11/xcursor/builtin.mk +++ b/x11/xcursor/builtin.mk @@ -32,7 +32,7 @@ BUILTIN_VERSION.xcursor!= \ /\#define[ ]*XCURSOR_(LIB_)?MINOR/ { m = "."$$3 } \ /\#define[ ]*XCURSOR_(LIB_)?REVISION/ { r = "."$$3 } \ END { printf "%s%s%s\n", M, m, r }' \ - ${H_XCURSOR} + ${_CROSS_DESTDIR:U:Q}${H_XCURSOR:Q} BUILTIN_PKG.xcursor= xcursor-${BUILTIN_VERSION.xcursor} .endif MAKEVARS+= BUILTIN_PKG.xcursor