# MCONFIG -- Configuration stuff for util-linux
# Created: Sat Feb  4 15:50:30 1995
# Copyright 1995 Rickard E. Faith (faith@cs.unc.edu)

# For a user-mode install, make (at least) three changes:
#  - remove the `-o root' part in INSTALLSUID
#  - set USE_TTY_GROUP=no
#  - define DESTDIR

# Select for ARCH one of intel, alpha, sparc, arm, m68k, mips
# Select for CPU i386 if the binaries must be able to run on an intel 386
# (by default i486 code is generated, see below)
CPU=$(shell uname -m)
ARCH=$(shell echo $(CPU) | sed 's/i.86/intel/;s/arm.*/arm/')

# If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp
# will use PAM for authentication. Additionally, passwd will not be
# installed as it is not PAM aware.
HAVE_PAM=no

# If HAVE_SELINUX is set to "yes", the login will make sure the user is
# logged into an appropriate security context
HAVE_SELINUX=no

# If HAVE_SHADOW is set to "yes", then login, chfn, chsh, newgrp, passwd,
# and vipw will not be built or installed from the login-utils
# subdirectory.  
HAVE_SHADOW=yes

# If HAVE_PASSWD is set to "yes", then passwd will not be built or
# installed from the login-utils subdirectory (but login, chfn, chsh,
# newgrp, and vipw *will* be installed).
HAVE_PASSWD=no

# If you use chfn and chsh from this package, REQUIRE_PASSWORD will require
# non-root users to enter the account password before updating /etc/passwd.
REQUIRE_PASSWORD=yes
#REQUIRE_PASSWORD=no

# If you use chsh from this package, ONLY_LISTED_SHELLS will require that
# the selected shell be listed in /etc/shells -- otherwise only a warning is
# printed.  This prevents someone from setting their shell to /bin/false.
ONLY_LISTED_SHELLS=yes
#ONLY_LISTED_SHELLS=no


# If HAVE_SYSVINIT is set to "yes", then simpleinit and shutdown will not
# be built or installed from the login-utils subdirectory.  (The shutdown
# and halt that come with the SysVinit package should be used with the init
# found in that package.)
HAVE_SYSVINIT=yes

# If HAVE_SYSVINIT_UTILS is set to "yes", then last, mesg, and wall will
# not be built or installed from the login-utils subdirectory.  (The
# shutdown and init from the SysVinit package do not depend on the last,
# mesg, and wall from that package.)
HAVE_SYSVINIT_UTILS=yes

# If HAVE_WRITE is set to "yes", then write will not be built or
# installed from the misc-utils subdirectory.
# (There is a network aware write in netwrite from NetKit 0.16 or later.)
HAVE_WRITE=no

# If HAVE_GETTY is set to "yes", then agetty will not be built or
# installed from the login-utils subdirectory.  Note that agetty can
# co-exist with other gettys, so this option should never be used.
HAVE_GETTY=no

# If USE_TTY_GROUP is set to "yes", then wall and write will be installed
# setgid to the "tty" group, and mesg will only set the group write bit.
# Note that this is only useful if login/xterm/etc. change the group of the
# user's tty to "tty" [The login in util-linux does this correctly, and
# xterm will do it correctly if X is compiled with USE_TTY_GROUP set
# properly.]
USE_TTY_GROUP=yes

# If HAVE_KILL is set to "yes", then kill will not be built or
# installed from the misc-utils subdirectory.
# (There is also a kill in the procps package.)
HAVE_KILL=no

# If ALLOW_VCS_USE is set to "yes", then login will chown /dev/vcsN
# to the current user, allowing her to make a screendump and do other
# nifty things on the console, but also allowing him to keep an open
# file descriptor after logging out to trick the next user.
ALLOW_VCS_USE=yes

# If HAVE_RESET is set to "yes", then reset won't be installed.  The version
# of reset that comes with the ncurses package is less aggressive.
HAVE_RESET=yes

# If HAVE_SLN is set to "yes", then sln won't be installed
# (but the man page sln.8 will be installed anyway).
# sln also comes with libc and glibc.
HAVE_SLN=no

# If HAVE_FDUTILS is set to "yes", then setfdprm won't be installed.
HAVE_FDUTILS=no

# If SILENT_PG is set to "yes", then pg will not ring the bell
# when an invalid key is pressed
SILENT_PG=no

# If configure decides that Native Language Support (NLS) is available,
# it sets MAY_ENABLE_NLS in defines.h. If you don't want NLS, set
# DISABLE_NLS to "yes".
DISABLE_NLS=no

# Different optimizations for different cpus.
# gcc 3.0 likes options -mcpu=i486 instead of -m486
ifeq "$(ARCH)" "intel"
  ifeq "$(HAVE_OLD_GCC)" "yes"
    CPUHEAD=-m
  else
    CPUHEAD=-mcpu=i
  endif
  ifeq "$(CPU)" "i386"
    CPUTAIL=386
  else
    CPUTAIL=486
  endif
  CPUOPT= $(CPUHEAD)$(CPUTAIL)
  OPT=          -pipe -O2 $(CPUOPT) -fomit-frame-pointer
else 
  ifeq "$(ARCH)" "arm"
    OPT=	-pipe -O2 -fsigned-char -fomit-frame-pointer
  else
    OPT=	-O2 -fomit-frame-pointer
  endif
endif

WARNFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes

LIB=../lib

ERR_O=$(LIB)/err.o

# Set HAVE_SLANG to yes if you have slang (and prefer to use that for cfdisk)
# (If neither HAVE_NCURSES nor HAVE_SLANG is defined, cfdisk is not made.)
# HAVE_SLANG=yes
# There is a subdirectory /usr/include/slang containing slcurses.h
# SLANGFLAGS=-I/usr/include/slang
# No such subdirectory - slcurses.h lives in /usr/include
#   (no extra definition required).
LIBSLANG=-lslang

#
# Paths used for compilation (not all are actually used, see CFLAGS below)
#
DEV_DIR=	/dev
ETC_DIR=	/etc
SBIN_DIR=	/sbin
USRSBIN_DIR=	/usr/sbin
USRLIB_DIR=	/usr/lib
USRBIN_DIR=	/usr/bin
USRGAMES_DIR=	/usr/games
USRSHAREMISC_DIR=/usr/share/misc
LOCALE_DIR=	/usr/share/locale
BIN_DIR=        /bin
VAR_PATH=	/var
LOG_DIR=	/var/log
MAN_DIR=	/usr/share/man
INFO_DIR=	/usr/share/info

#
# Paths used for install
#
DEVDIR=		$(DESTDIR)$(DEV_DIR)
ETCDIR=		$(DESTDIR)$(ETC_DIR)
SBINDIR=	$(DESTDIR)$(SBIN_DIR)
USRSBINDIR=	$(DESTDIR)$(USRSBIN_DIR)
USRLIBDIR=      $(DESTDIR)$(USRLIB_DIR)
USRBINDIR=      $(DESTDIR)$(USRBIN_DIR)
USRGAMESDIR=    $(DESTDIR)$(USRGAMES_DIR)
USRSHAREMISCDIR=$(DESTDIR)$(USRSHAREMISC_DIR)
LOCALEDIR=      $(DESTDIR)$(LOCALE_DIR)
BINDIR=         $(DESTDIR)$(BIN_DIR)
VARPATH=	$(DESTDIR)$(VAR_PATH)
LOGDIR=		$(DESTDIR)$(LOG_DIR)
MANDIR=		$(DESTDIR)$(MAN_DIR)
MAN1DIR=	$(MANDIR)/man1
MAN3DIR=	$(MANDIR)/man3
MAN5DIR=	$(MANDIR)/man5
MAN6DIR=	$(MANDIR)/man6
MAN8DIR=	$(MANDIR)/man8
INFODIR=	$(DESTDIR)$(INFO_DIR)

# Directory for shutdown, halt, reboot, etc.
SHUTDOWNDIR=	$(SBINDIR)

# Modes
DIRMODE=	755
BINMODE=	755
MANMODE=	644
DATMODE=	644
INFOMODE=	644
SUIDMODE=      4755

CHMOD=		chmod
INSTALL=	install
INSTALLDIR=	$(INSTALL) -d -m $(DIRMODE)
INSTALLBIN=	$(INSTALL) -m $(BINMODE)
INSTALLMAN=	$(INSTALL) -m $(MANMODE)
INSTALLDAT=	$(INSTALL) -m $(DATMODE)
INSTALLSUID=    $(INSTALL) -m $(SUIDMODE) -o root

ifeq "$(DISABLE_NLS)" "yes"
NLSFLAGS = -DDISABLE_NLS
endif

CFLAGS := $(OPT) -I$(LIB) $(WARNFLAGS) \
			$(CURSESFLAGS) $(SLANGFLAGS) $(NLSFLAGS) \
			-D_FILE_OFFSET_BITS=64 \
			-DSBINDIR=\"$(SBIN_DIR)\" \
			-DUSRSBINDIR=\"$(USRSBIN_DIR)\" \
			-DLOGDIR=\"$(LOG_DIR)\" \
			-DVARPATH=\"$(VAR_PATH)\" \
			-DLOCALEDIR=\"$(LOCALE_DIR)\" \
			$(CFLAGS)


%.o: %.c
	$(CC) -c $(CFLAGS) $< -o $@

%: %.cc
	$(CXX) $(CFLAGS) $< -o $@

