# $FreeBSD: src/release/sysinstall/Makefile,v 1.92.2.16 2001/12/17 08:32:33 roam Exp $

PROG=	sysinstall
MAN=	sysinstall.8

BINDIR=/stand
NOSHARED=YES

CLEANFILES+=	makedevs.c rtermcap rtermcap.tmp dumpnlist
CLEANFILES+=	keymap.tmp keymap.h

.PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum

SRCS=	anonFTP.c catalog.c cdrom.c command.c config.c devices.c dhcp.c \
	kget.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 pccard.c \
	system.c tape.c tcpip.c termcap.c tzsetup.c ufs.c usb.c user.c \
	variable.c wizard.c keymap.h

CFLAGS+= -Wall -I${.CURDIR}/../../gnu/lib/libdialog -I${.OBJDIR} \
	-I${.CURDIR}/../localization/kon2

.if ${MACHINE} == "pc98"
CFLAGS+= -DPC98
.endif

USE_KON=	no
.for _language in ${SYSINSTALL_LANG}
# XXX -- I don'n know why it's needed, but it's needed. (make(1) bug?)
__language=	${_language}
.if ${__language} == ja
CFLAGS+=	-DJAPANESE
USE_KON=	yes
.elif ${__language} == ko
CFLAGS+=	-DKOREAN
USE_KON=	yes
.elif ${__language} == pt_BR
CFLAGS+=	-DPORTUGUESE_BR
.elif ${__language} == ru
CFLAGS+=	-DRUSSIAN
.elif ${__language} == zh_TW
CFLAGS+=	-DTRAD_CHINESE
USE_KON=	yes
.endif
.endfor

.if ${USE_KON} == "yes"
CFLAGS+= -DUSE_KON
LDADD+= -DUSE_KON -L${.OBJDIR}/../localization/kon2 -lkon2
LDADD+=	-ldialog-euc -lncurses-euc
.else
LDADD+=	-ldialog -lncurses
.endif

DPADD+=	${LIBDIALOG} ${LIBNCURSES} ${LIBUTIL} ${LIBDISK} ${LIBFTPIO}
LDADD+=	-lutil -ldisk -lftpio -lcrypt

makedevs.c:	Makefile rtermcap keymap.h
	rm -f makedevs.tmp
	echo '#include <sys/types.h>' > makedevs.tmp
	./rtermcap ansi | \
		file2c 'const char termcap_ansi[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25w | \
		file2c 'const char termcap_cons25w[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25 | \
		file2c 'const char termcap_cons25[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25-m | \
		file2c 'const char termcap_cons25_m[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25r | \
		file2c 'const char termcap_cons25r[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25r-m | \
		file2c 'const char termcap_cons25r_m[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25l1 | \
		file2c 'const char termcap_cons25l1[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap cons25l1-m | \
		file2c 'const char termcap_cons25l1_m[] = {' ',0};' \
		>> makedevs.tmp
.if defined(USE_KON)
	./rtermcap kons25jx | \
		file2c 'const char termcap_kons25jx[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap kons25jx-m | \
		file2c 'const char termcap_kons25jx_m[] = {' ',0};' \
		>> makedevs.tmp
.endif
	./rtermcap vt100 | \
		file2c 'const char termcap_vt100[] = {' ',0};' \
		>> makedevs.tmp
	./rtermcap xterm | \
		file2c 'const char termcap_xterm[] = {' ',0};' \
		>> makedevs.tmp
.if ${MACHINE} == "i386"
	file2c 'u_char boot0[] = {' '};' < /boot/boot0 >> makedevs.tmp
	echo "size_t boot0_size = sizeof(boot0);" >> makedevs.tmp
	file2c 'u_char mbr[] = {' '};' < /boot/mbr >> makedevs.tmp
	echo "size_t mbr_size = sizeof(mbr);" >> makedevs.tmp
.endif
.if ${MACHINE} == "pc98"
	file2c 'u_char boot0[] = {' '};' < /boot/boot0 >> makedevs.tmp
	echo "size_t boot0_size = sizeof(boot0);" >> makedevs.tmp
	file2c 'u_char boot05[] = {' '};' < /boot/boot0.5 >> makedevs.tmp
	echo "size_t boot05_size = sizeof(boot05);" >> makedevs.tmp
.endif
	mv makedevs.tmp makedevs.c

rtermcap:	${.CURDIR}/rtermcap.c
	${CC} -o rtermcap ${.CURDIR}/rtermcap.c -ltermcap


.if ${MACHINE} == "pc98"
KEYMAPS= jp.pc98 jp.pc98.iso
.else
KEYMAPS= be.iso bg.bds.ctrlcaps bg.phonetic.ctrlcaps br275.cp850 br275.iso \
	cs.latin2.qwertz danish.cp865 danish.iso estonian.iso \
	estonian.iso15 estonian.cp850 finnish.cp850 finnish.iso fr.iso \
	fr.iso.acc german.cp850 german.iso hr.iso hu.iso2.101keys \
	hu.iso2.102keys it.iso icelandic.iso icelandic.iso.acc jp.106 \
	lat-amer norwegian.iso pt.iso pt.iso.acc ru.koi8-r si.iso spanish.iso \
	spanish.iso.acc swedish.cp850 swedish.iso swissfrench.cp850 \
	swissfrench.iso swissgerman.cp850 swissgerman.iso swissgerman.iso.acc \
	ua.koi8-u ua.koi8-u.shift.alt uk.cp850 uk.iso us.dvorak us.emacs \
	us.iso us.pc-ctrl us.unix
.endif

keymap.h:
	rm -f keymap.tmp
	for map in ${KEYMAPS} ; do \
		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 "	{ 0 }"; echo "};" ; echo "" ) >> keymap.tmp
	mv keymap.tmp keymap.h

beforeinstall:
	@if [ ! -d ${BINDIR}/ ]; then \
		mkdir -p ${BINDIR}; \
	fi

.include <bsd.prog.mk>
