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

# 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
