.if exists(${.CURDIR}/gnu)
SUBDIR+= gnu
.endif
-.if exists(${.CURDIR}/kerberos5) && exists(${.CURDIR}/crypto) && \
- !defined(NO_CRYPT) && !defined(NO_OPENSSL) && defined(WANT_KERBEROS)
-SUBDIR+= kerberos5
-.endif
.if exists(${.CURDIR}/libexec)
SUBDIR+= libexec
.endif
SUBDIR+= usr.sbin
.endif
-# etc must be last for "distribute" to work
.if exists(${.CURDIR}/etc)
SUBDIR+= etc
.endif
# This sets the compiler we use to build the world/kernel with
WORLD_CCVER?= gcc41
+WORLD_BINUTILSVER?= binutils217
+
+# temporary until everybody has converted to x86_64
+.if ${MACHINE_ARCH} == "amd64"
+MACHINE_ARCH= x86_64
+.makeenv MACHINE_ARCH
+.endif
TARGET_ARCH?= ${MACHINE_ARCH}
.if ${TARGET_ARCH} == ${MACHINE_ARCH}
.endif
.if make(buildworld)
BUILD_ARCH!= sysctl -n hw.machine_arch
+
+# temporary until everybody has converted to x86_64
+.if ${BUILD_ARCH} == "amd64"
+BUILD_ARCH= x86_64
+.endif
+
.if ${MACHINE_ARCH} != ${BUILD_ARCH}
.error To cross-build, set TARGET_ARCH.
.endif
.if !defined(TARGET_PLATFORM)
.if ${TARGET_ARCH} == "i386"
TARGET_PLATFORM= pc32
-.elif ${TARGET_ARCH} == "amd64"
+.elif ${TARGET_ARCH} == "x86_64"
TARGET_PLATFORM= pc64
.else
.error Unknown target architecture.
MACHINE_PLATFORM=${TARGET_PLATFORM} \
OBJFORMAT_PATH=${CTOOLSDEST} \
HOST_CCVER=${HOST_CCVER} \
- CCVER=${WORLD_CCVER}
+ CCVER=${WORLD_CCVER} \
+ BINUTILSVER=${WORLD_BINUTILSVER}
WMAKEENV= ${CROSSENV} \
DESTDIR=${WORLDDEST} \
# Attempt to rebuild the entire system, with reasonable chance of
# success, regardless of how old your existing system is.
#
-_worldtmp:
+_worldtmp: _cleantmp _mtreetmp
+.ORDER: _cleantmp _mtreetmp
+
+_cleantmp:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Rebuilding the temporary build tree"
rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c
rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c
.endif
+
+_mtreetmp:
mkdir -p ${DESTDIRBASE} ${BTOOLSDEST} ${CTOOLSDEST} ${WORLDDEST}
.for _dir in ${WORLDDEST} ${BTOOLSDEST} ${CTOOLSDEST}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
buildworld: ${WMAKE_TGTS}
-quickworld: _obj _includes _libraries _depend everything
+quickworld: _mtreetmp _obj _includes _libraries _depend everything
-realquickworld: _obj _includes _libraries everything
+realquickworld: _mtreetmp _obj _includes _libraries everything
crossworld: _worldtmp _bootstrap-tools _obj _build-tools _cross-tools
.ORDER: ${WMAKE_TGTS}
+.ORDER: _obj _includes
+.ORDER: _mtreetmp _obj
#
# installcheck
.if !defined(DESTDIR) || ${DESTDIR} == "" || ${DESTDIR} == "/"
@case `uname -r` in 1.2*|1.3-*|1.3.*|1.4.*|1.5.0-*|1.5.1-*|1.5.2-*|1.5.3-*) echo "You must upgrade your kernel to at least 1.5.4 and reboot before you can safely installworld, due to libc/system call ABI changes" ; exit 1;; esac
.endif
-# distributeworld
-#
-# Distributes everything compiled by a `buildworld'.
#
# installworld
#
# Installs everything compiled by a 'buildworld'.
#
-distributeworld installworld: installcheck
+installworld: installcheck
cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}
${INSTALL} -o root -g wheel -m 644 ${.CURDIR}/Makefile_upgrade.inc ${DESTDIR}/etc/upgrade/
cd ${.CURDIR}/share/man; ${MAKE} makedb
.endif
-redistribute:
- @echo "--------------------------------------------------------------"
- @echo ">>> Distributing everything.."
- @echo "--------------------------------------------------------------"
- cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute
-
#
# buildkernel, nativekernel, quickkernel, and installkernel
#
KERNCONF= ${KERNEL}
KERNWARN= yes
.else
+# XXX makeshift fix to build the right kernel for the (target) architecture
+# We should configure this in the platform files somehow
+.if ${TARGET_ARCH} == "i386"
KERNCONF?= GENERIC
+.else
+KERNCONF?= X86_64_GENERIC
+.endif
.endif
INSTKERNNAME?= kernel
echo ${KERNEL_VERSION_${_kernel}} > ${KRNLOBJDIR}/${_kernel}/version
.endif
touch ${KRNLOBJDIR}/${_kernel}/.buildkernel_run
- cd ${KRNLOBJDIR}/${_kernel}; \
- MAKESRCPATH=${KRNLSRCDIR}/dev/disk/aic7xxx/aicasm \
- ${MAKE} -DBOOTSTRAPPING -f ${KRNLSRCDIR}/dev/disk/aic7xxx/aicasm/Makefile
.if !defined(NO_KERNELDEPEND)
cd ${KRNLOBJDIR}/${_kernel}; \
${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend
_share= share/syscons/scrnmaps
.endif
-.if !defined(NO_GCC34)
-_gcc34_cross= gnu/usr.bin/cc34
-_gcc34_tools= gnu/usr.bin/cc34/cc_prep gnu/usr.bin/cc34/cc_tools
-.endif
_gcc41_cross= gnu/usr.bin/cc41
_gcc41_tools= gnu/usr.bin/cc41/cc_prep gnu/usr.bin/cc41/cc_tools
-_binutils= gnu/usr.bin/binutils217
-
-.if exists(${.CURDIR}/kerberos5) && exists(${.CURDIR}/crypto) && \
- !defined(NO_CRYPT) && defined(WANT_KERBEROS)
-_libkrb5= kerberos5/tools kerberos5/lib/libroken kerberos5/lib/libvers \
- kerberos5/lib/libasn1 kerberos5/lib/libhdb kerberos5/lib/libsl
+.if !defined(NO_GCC44)
+_gcc44_cross= gnu/usr.bin/cc44
+_gcc44_tools= gnu/usr.bin/cc44/cc_prep gnu/usr.bin/cc44/cc_tools
.endif
+_custom_cross= libexec/customcc
+_binutils= gnu/usr.bin/${WORLD_BINUTILSVER}
build-tools:
-.for _tool in ${_gcc34_tools} ${_gcc41_tools} ${_libkrb5} ${_share}
+.for _tool in ${_gcc41_tools} ${_gcc44_tools} ${_libkrb5} ${_share}
${ECHODIR} "===> ${_tool} (build-tools)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
cross-tools:
.for _tool in ${_btxld} ${_binutils} \
- usr.bin/objformat usr.bin/crunch/crunchide \
- ${_gcc34_cross} ${_gcc41_cross}
+ usr.bin/objformat \
+ ${_gcc41_cross} ${_gcc44_cross} ${_custom_cross}
${ECHODIR} "===> ${_tool} (cross-tools)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
# to specify the correct CCVER or 'cc' will not exec the correct compiler.
#
libraries:
-.if !defined(NO_GCC34)
- cd ${.CURDIR}; \
- HOST_CCVER=${HOST_CCVER} CCVER=gcc34 \
- ${MAKE} -f Makefile.inc1 _startup_libs34;
-.endif
cd ${.CURDIR}; \
HOST_CCVER=${HOST_CCVER} CCVER=gcc41 \
${MAKE} -f Makefile.inc1 _startup_libs41;
+.if !defined(NO_GCC44)
+ cd ${.CURDIR}; \
+ HOST_CCVER=${HOST_CCVER} CCVER=gcc44 \
+ ${MAKE} -f Makefile.inc1 _startup_libs44;
+.endif
cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 _startup_libs; \
${MAKE} -f Makefile.inc1 _prebuild_libs; \
# These dependencies are not automatically generated:
#
# gnu/lib/${CCVER}/libgcc and gnu/lib/${CCVER}/csu must be built before all
-# shared libraries for ELF. The target for _startup_libs34 is
-# specifically built using gcc34. Same goes for _startup_libs41.
+# shared libraries for ELF. The target for _startup_libsXX is
+# specifically built using gccXX.
#
-_startup_libs34= gnu/lib/gcc34/csu gnu/lib/gcc34/libgcc
_startup_libs41= gnu/lib/gcc41/csu gnu/lib/gcc41/libgcc
+_startup_libs44= gnu/lib/gcc44/csu gnu/lib/gcc44/libgcc
_startup_libs= lib/csu lib/libc lib/libc_rtld
-_prebuild_libs= lib/libbz2 lib/libz lib/libarchive
+_prebuild_libs= lib/libbz2 lib/libz
_prebuild_libs+= lib/libutil
_generic_libs= gnu/lib
-.if !defined(NO_CRYPT) && defined(WANT_KERBEROS)
-_prebuild_libs+= kerberos5/tools
-_prebuild_libs+= kerberos5/lib/libasn1
-_prebuild_libs+= kerberos5/lib/libgssapi
-_prebuild_libs+= kerberos5/lib/libkrb5
-_prebuild_libs+= kerberos5/lib/libroken
-_generic_libs+= kerberos5/lib
-.endif
-
_prebuild_libs+= lib/libcom_err lib/libcrypt lib/libmd \
lib/libncurses/libncurses lib/libopie lib/libradius \
lib/libsbuf lib/libtacplus lib/libm \
_generic_libs+= usr.bin/lex/lib
-.for _lib in ${_startup_libs34} ${_startup_libs41} \
+.for _lib in ${_startup_libs41} ${_startup_libs44} \
${_startup_libs} ${_prebuild_libs} ${_generic_libs}
${_lib}__L: .PHONY
.if exists(${.CURDIR}/${_lib})
.endfor
_startup_libs: ${_startup_libs:S/$/__L/}
-_startup_libs34: ${_startup_libs34:S/$/__L/}
_startup_libs41: ${_startup_libs41:S/$/__L/}
+_startup_libs44: ${_startup_libs44:S/$/__L/}
_prebuild_libs: ${_prebuild_libs:S/$/__L/}
_generic_libs: ${_generic_libs:S/$/__L/}
# library targets must be ordered because there are inter-library
# races (e.g. generation of tconfig.h)
#
-.ORDER: ${_startup_libs34:S/$/__L/}
.ORDER: ${_startup_libs41:S/$/__L/}
+.ORDER: ${_startup_libs44:S/$/__L/}
.ORDER: ${_startup_libs:S/$/__L/}
.ORDER: ${_prebuild_libs:S/$/__L/}
.ORDER: ${_generic_libs:S/$/__L/}