freebsd-dev/usr.sbin/sade/Makefile
Sam Leffler 9fe7600bbe Revamp base system packaging of kernels to enable up/smp selection
at runtime and to support distributing additional kernels:
o remove kernel from the base tarball
o add new kernel tarballs
o build + package both SMP and GENERIC kernels when an <arch>/conf/SMP
  config file is present
o add sysinstall support for multiple kernels
o update sysinstall to probe for the number of cpus on a system
  and auto-select smp/up kernel accordingly
o add a post-kernels install hook to fixup /boot/kernel
o add -ldevinfo to boot crunch for sysinstall's cpu probing logic

Notes:
1. On HEAD this code is not currently used because GENERIC kernels
   include SMP.  This work is mainly intended for RELENG_6 where the
   GENERIC kernel is UP.  If HEAD changes to match then just enable
   WITH_SMP in sysinstall/Makefile.
2. The cpu probing support is done with acpi and MPTable; this means
   some systems will require work for auto-detection to work.
3. The handling of /boot/kernel may need to be revisited; for now
   we rename one kernel at the last moment (SMP if installed, otherwise
   GENERIC).  There are other, possibly better, approaches.

Lots of help from ru, emaste, scottl, and jhb.
2006-03-08 18:02:32 +00:00

154 lines
5.1 KiB
Makefile

# $FreeBSD$
.if ${MACHINE_ARCH} != "ia64"
_wizard= wizard.c
.endif
PROG= sysinstall
MAN= sysinstall.8
SRCS= anonFTP.c cdrom.c command.c config.c devices.c dhcp.c \
disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \
ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \
label.c main.c makedevs.c media.c menus.c misc.c modules.c \
mouse.c msg.c network.c nfs.c options.c package.c \
system.c tape.c tcpip.c termcap.c ttys.c ufs.c user.c \
variable.c ${_wizard} keymap.h countries.h
CFLAGS+= -DUSE_GZIP=1
.if ${MACHINE} == "pc98"
CFLAGS+= -DPC98
.endif
CFLAGS+= -I${.CURDIR}/../../gnu/lib/libdialog -I.
DPADD= ${LIBDIALOG} ${LIBNCURSES} ${LIBUTIL} ${LIBDISK} ${LIBFTPIO}
LDADD= -ldialog -lncurses -lutil -ldisk -lftpio
#
# When distributions have both UP and SMP kernels sysinstall
# will probe for the number of cpus on the target machine and
# automatically select which is appropriate. This can be overridden
# through the menus or both kernels can be installed (with the
# most "appropriate" one setup as /boot/kernel). For now this
# is done for i386 and amd64; for other systems support must be
# added to identify the cpu count if acpi and MPTable probing
# is insufficient.
#
# The unmber of cpus probed is passed through the environment in
# VAR_NCPUS ("ncpus") to scripts.
#
# Note that WITH_SMP is a compile time option that enables the
# builtin menus for the SMP kernel configuration. If this kernel
# is not built (see release/Makefile) then this should not be
# enabled as sysinstall may try to select an SMP kernel config
# where none is available. This option should not be needed--we
# should probe for an SMP kernel in the distribution but doing
# that is painful because of media changes and the structure of
# sysinstall so for now it's a priori.
#
.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
SRCS+= acpi.c biosmptable.c
# NB: HEAD has SMP in GENERIC so only one kernel
#CFLAGS+=-DWITH_SMP
DPADD+= ${LIBDEVINFO}
LDADD+= -ldevinfo
.endif
CLEANFILES= makedevs.c rtermcap
CLEANFILES+= keymap.tmp keymap.h countries.tmp countries.h
.if exists(${.CURDIR}/../../share/termcap/termcap.src)
RTERMCAP= TERMCAP=${.CURDIR}/../../share/termcap/termcap.src ./rtermcap
.else
RTERMCAP= ./rtermcap
.endif
makedevs.c: Makefile rtermcap
echo '#include <sys/types.h>' > makedevs.c
${RTERMCAP} ansi | \
file2c 'const char termcap_ansi[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25w | \
file2c 'const char termcap_cons25w[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25 | \
file2c 'const char termcap_cons25[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25-m | \
file2c 'const char termcap_cons25_m[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25r | \
file2c 'const char termcap_cons25r[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25r-m | \
file2c 'const char termcap_cons25r_m[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25l1 | \
file2c 'const char termcap_cons25l1[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} cons25l1-m | \
file2c 'const char termcap_cons25l1_m[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} vt100 | \
file2c 'const char termcap_vt100[] = {' ',0};' \
>> makedevs.c
${RTERMCAP} xterm | \
file2c 'const char termcap_xterm[] = {' ',0};' \
>> makedevs.c
build-tools: rtermcap
rtermcap: rtermcap.c
${CC} -o ${.TARGET} ${.ALLSRC} -ltermcap
.if ${MACHINE} == "pc98"
KEYMAPS= jp.pc98 jp.pc98.iso
.else
KEYMAPS= be.iso bg.bds.ctrlcaps bg.phonetic.ctrlcaps br275.iso \
ce.iso2 cs.latin2.qwertz danish.iso el.iso07 \
estonian.cp850 estonian.iso estonian.iso15 finnish.iso fr.iso \
german.iso gr.elot.acc gr.us101.acc hr.iso hu.iso2.101keys \
it.iso icelandic.iso jp.106 norwegian.iso pl_PL.ISO8859-2 \
pt.iso ru.koi8-r si.iso sk.iso2 spanish.iso swedish.iso \
swissfrench.iso \
swissgerman.iso ua.koi8-u ua.koi8-u.shift.alt uk.iso us.dvorak \
us.iso us.pc-ctrl us.unix
.endif
keymap.h:
rm -f keymap.tmp
for map in ${KEYMAPS} ; do \
KEYMAP_PATH=${.CURDIR}/../../share/syscons/keymaps \
kbdcontrol -L $$map | \
sed -e '/^static accentmap_t/,$$d' >> keymap.tmp ; \
done
echo "static struct keymapInfo keymapInfos[] = {" >> keymap.tmp
for map in ${KEYMAPS} ; do \
echo -n ' { "'$$map'", ' >> keymap.tmp ; \
echo "&keymap_$$map }," | tr '[-.]' '_' >> keymap.tmp ; \
done
( echo " { NULL, NULL }"; echo "};" ; echo "" ) >> keymap.tmp
mv keymap.tmp keymap.h
countries.h: ${.CURDIR}/../../share/misc/iso3166
rm -f countries.tmp
awk 'BEGIN { \
FS = "\t"; \
num = 1; \
print "DMenu MenuCountry = {"; \
print " DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS,"; \
print " \"Country Selection\","; \
print " \"Please choose a country, region, or group.\\n\""; \
print " \"Select an item using [SPACE] or [ENTER].\","; \
printf " NULL,\n NULL,\n { "; \
} \
/^[[:space:]]*#/ {next;} \
{if (num > 1) {printf " ";} \
print "{ \"" num "\", \"" $$4 "\"" \
", dmenuVarCheck, dmenuSetCountryVariable" \
", NULL, VAR_COUNTRY \"=" tolower($$1) "\" },"; \
++num;} \
END {print " { NULL } }\n};\n";}' < ${.ALLSRC} > countries.tmp
mv countries.tmp ${.TARGET}
.include <bsd.prog.mk>