Welcome to ftp.nluug.nl Current directory: /ftp/NetBSD/NetBSD-release-9/src/compat/ |
|
Contents of README:$NetBSD: README,v 1.8 2012/03/29 18:35:11 wiz Exp $ Building multi-ABI libraries for NetBSD platforms. src/compat has a framework to (re)build the libraries shipped with NetBSD for a different ABI than the default for that platform. This allows 32-bit libraries for the amd64 and sparc64 ports, and enables the mips64 port to support all three of old-style 32-bit ("o32"), the new 32-bit (default, "n32", 64-bit CPU required) or the 64-bit ABI. The basic premise is to re-set $MAKEOBJDIR to fresh subdirectory underneath src/compat and rebuild the libraries with a different set of options. Each platform wanting support should create their port subdirectory directly in src/compat, and then one subdirectory in here for each ABI required, e.g., src/compat/amd64/i386 is where we build the 32-bit compat libraries for the amd64 port. In each of these subdirectories, a small Makefile and makefile fragment should exist. The Makefile should set BSD_MK_COMPAT_FILE to equal the fragment, and then include "../../compatsubdir.mk". E.g., amd64/i386/Makefile has: BSD_MK_COMPAT_FILE=${.CURDIR}/bsd.i386.mk .include "../../compatsubdir.mk" In the makefile fragment any changes to ABI flags are passed here and the MLIBDIR variable must be set to the subdirectory in /usr/lib where libraries for the ABI will be installed. There are a couple of helper Makefiles around. amd64/i386/bsd.i386.mk looks like: LD+= -m elf_i386 MLIBDIR= i386 LIBC_MACHINE_ARCH= ${MLIBDIR} COMMON_MACHINE_ARCH= ${MLIBDIR} KVM_MACHINE_ARCH= ${MLIBDIR} PTHREAD_MACHINE_ARCH= ${MLIBDIR} BFD_MACHINE_ARCH= ${MLIBDIR} CSU_MACHINE_ARCH= ${MLIBDIR} CRYPTO_MACHINE_CPU= ${MLIBDIR} LDELFSO_MACHINE_CPU= ${MLIBDIR} .include "${NETBSDSRCDIR}/compat/m32.mk" and the referenced m32.mk looks like: COPTS+= -m32 CPUFLAGS+= -m32 LDADD+= -m32 LDFLAGS+= -m32 MKDEPFLAGS+= -m32 .include "Makefile.compat" compatsubdir.mk holds the list of subdirectories (the libraries and ld.elf_so) to build with this ABI. archdirs.mk holds the list of subdirectories for each port. Makefile.compat has the basic framework to force the right paths for library and ld.elf_so linkage. It contains a hack to create subdirectories in the build that should be fixed. dirshack/Makefile is a hack to get objdirs created timely, and should be fixed in a better way. mrg@eterna.com.au december 2009 |
Name Last modified Size
Parent Directory - CVS/ 23-Nov-2024 04:13 - amd64/ 14-Feb-2024 19:44 - arm/ 14-Feb-2024 19:44 - dirshack/ 14-Feb-2024 19:44 - mips64/ 23-Nov-2024 04:13 - powerpc64/ 14-Feb-2024 19:44 - riscv64/ 14-Feb-2024 19:44 - sparc64/ 14-Feb-2024 19:44 - Makefile 17-Aug-2012 18:22 286 Makefile.compat 23-Aug-2012 23:21 852 README 29-Mar-2012 20:35 2.3K archdirs.mk 13-Jun-2019 23:17 801 compatsubdir.mk 23-Jul-2015 10:03 1.0K exec.mk 08-Jan-2021 14:00 1.4K m32.mk 18-Jun-2011 03:22 313
NLUUG - Open Systems. Open Standards
Become a member
and get discounts on conferences and more, see the NLUUG website!