# 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)       +=freeramdisk.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_SETARCH)       +=setarch.o
UTILLINUX-$(CONFIG_SWAPONOFF)     +=swaponoff.o
UTILLINUX-$(CONFIG_SWITCH_ROOT)   +=switch_root.o
UTILLINUX-$(CONFIG_UMOUNT)        +=umount.o

UTILLINUX-y:=$(sort $(UTILLINUX-y))

ifneq ($(strip $(UTILLINUX-y)),)
libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR)
endif

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))
	$(do_ar)

$(UTILLINUX_DIR)%.o: $(srcdir)/%.c
	$(compile.c)

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
