# Makefile for busybox
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
#
# Licensed under the GPL v2, see the file LICENSE in this tarball.

UTILLINUX_AR:=util-linux.a
ifndef $(UTILLINUX_DIR)
UTILLINUX_DIR:=$(top_builddir)/util-linux/
endif
srcdir=$(top_srcdir)/util-linux

UTILLINUX-y:=
UTILLINUX-$(CONFIG_DMESG)         +=dmesg.o
UTILLINUX-$(CONFIG_FBSET)         +=fbset.o
UTILLINUX-$(CONFIG_FDFLUSH)       +=fdflush.o
UTILLINUX-$(CONFIG_FDFORMAT)      +=fdformat.o
UTILLINUX-$(CONFIG_FDISK)         +=fdisk.o
UTILLINUX-$(CONFIG_FREERAMDISK)   +=freeramdisk.o
UTILLINUX-$(CONFIG_FSCK_MINIX)    +=fsck_minix.o
UTILLINUX-$(CONFIG_GETOPT)        +=getopt.o
UTILLINUX-$(CONFIG_HEXDUMP)       +=hexdump.o
UTILLINUX-$(CONFIG_HWCLOCK)       +=hwclock.o
UTILLINUX-$(CONFIG_IPCRM)         +=ipcrm.o
UTILLINUX-$(CONFIG_IPCS)          +=ipcs.o
UTILLINUX-$(CONFIG_LOSETUP)       +=losetup.o
UTILLINUX-$(CONFIG_MDEV)          +=mdev.o
UTILLINUX-$(CONFIG_MKFS_MINIX)    +=mkfs_minix.o
UTILLINUX-$(CONFIG_MKSWAP)        +=mkswap.o
UTILLINUX-$(CONFIG_MORE)          +=more.o
UTILLINUX-$(CONFIG_MOUNT)         +=mount.o
UTILLINUX-$(CONFIG_FEATURE_MOUNT_NFS)	+=nfsmount.o
UTILLINUX-$(CONFIG_PIVOT_ROOT)    +=pivot_root.o
UTILLINUX-$(CONFIG_RDATE)         +=rdate.o
UTILLINUX-$(CONFIG_READPROFILE)   +=readprofile.o
UTILLINUX-$(CONFIG_SWAPONOFF)     +=swaponoff.o
UTILLINUX-$(CONFIG_SWITCH_ROOT)   +=switch_root.o
UTILLINUX-$(CONFIG_UMOUNT)        +=umount.o


libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR)

UTILLINUX_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(UTILLINUX-y))
UTILLINUX_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(UTILLINUX_SRC-y)
APPLET_SRC-a+=$(UTILLINUX_SRC-a)

$(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))

$(UTILLINUX_DIR)%.o: $(srcdir)/%.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

ifneq ($(strip $(CONFIG_LFS)),y)
ifeq ($(strip $(FDISK_SUPPORT_LARGE_DISKS)),y)

$(UTILLINUX_DIR)fdisk.o: $(srcdir)/fdisk.c
	$(CC) $(CFLAGS) \
		-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \
		$(EXTRA_CFLAGS) -c -o $@ $<

endif
endif
