# 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.

lib-y:= \
	ask_confirmation.o change_identity.o chomp.o \
	compare_string_array.o concat_path_file.o copy_file.o copyfd.o \
	crc32.o create_icmp_socket.o create_icmp6_socket.o \
	device_open.o dump.o error_msg.o error_msg_and_die.o \
	find_pid_by_name.o find_root_device.o fgets_str.o \
	full_write.o get_last_path_component.o get_line_from_file.o \
	herror_msg.o herror_msg_and_die.o \
	human_readable.o inet_common.o inode_hash.o isdirectory.o \
	kernel_version.o last_char_is.o login.o \
	make_directory.o md5.o mode_string.o mtab_file.o \
	obscure.o parse_mode.o perror_msg.o \
	perror_msg_and_die.o get_console.o \
	process_escape_sequence.o procps.o \
	recursive_action.o remove_file.o \
	restricted_shell.o run_parts.o run_shell.o read.o safe_write.o \
	safe_strncpy.o setup_environment.o sha1.o simplify_path.o \
	trim.o u_signal_names.o vdprintf.o verror_msg.o \
	vherror_msg.o vperror_msg.o wfopen.o xconnect.o xgetcwd.o \
	xgethostbyname.o xgethostbyname2.o xreadlink.o \
	fclose_nonstdin.o fflush_stdout_and_exit.o \
	getopt32.o default_error_retval.o wfopen_input.o speed_table.o \
	perror_nomsg_and_die.o perror_nomsg.o skip_whitespace.o bb_askpass.o \
	warn_ignoring_args.o concat_subpath_file.o vfork_daemon_rexec.o \
	bb_do_delay.o uuencode.o info_msg.o vinfo_msg.o execable.o

# conditionally compiled objects:
lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o
lib-$(CONFIG_LOSETUP) += loop.o
lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
lib-$(CONFIG_PASSWD) += pw_encrypt.o
lib-$(CONFIG_SULOGIN) += pw_encrypt.o
lib-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) += pw_encrypt.o
lib-$(CONFIG_VLOCK) += correct_password.o
lib-$(CONFIG_SU) += correct_password.o
lib-$(CONFIG_LOGIN) += correct_password.o
lib-$(CONFIG_DF) += find_mount_point.o
lib-$(CONFIG_EJECT) += find_mount_point.o

# We shouldn't build xregcomp.c if we don't need it - this ensures we don't
# require regex.h to be in the include dir even if we don't need it thereby
# allowing us to build busybox even if uclibc regex support is disabled.

lib-$(CONFIG_AWK) += xregcomp.o
lib-$(CONFIG_SED) += xregcomp.o
lib-$(CONFIG_LESS) += xregcomp.o
lib-$(CONFIG_DEVFSD) += xregcomp.o

lib-y += messages.o
lib-y += xfuncs.o
lib-y += printf.o
lib-y += xatol.o
lib-y += safe_strtol.o
lib-y += bb_pwd.o
lib-y += llist.o
