# 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:=

lib-y += appletlib.o
lib-y += ask_confirmation.o
lib-y += bb_askpass.o
lib-y += bb_basename.o
lib-y += bb_do_delay.o
lib-y += bb_pwd.o
lib-y += bb_qsort.o
#lib-y += bb_strtod.o
lib-y += bb_strtonum.o
lib-y += change_identity.o
lib-y += chomp.o
lib-y += compare_string_array.o
lib-y += concat_path_file.o
lib-y += concat_subpath_file.o
lib-y += copy_file.o
lib-y += copyfd.o
lib-y += crc32.o
lib-y += create_icmp6_socket.o
lib-y += create_icmp_socket.o
lib-y += default_error_retval.o
lib-y += device_open.o
lib-y += dump.o
lib-y += error_msg.o
lib-y += error_msg_and_die.o
lib-y += execable.o
lib-y += fclose_nonstdin.o
lib-y += fflush_stdout_and_exit.o
lib-y += fgets_str.o
lib-y += find_pid_by_name.o
lib-y += find_root_device.o
lib-y += full_write.o
lib-y += get_console.o
lib-y += get_last_path_component.o
lib-y += get_line_from_file.o
lib-y += getopt32.o
lib-y += getpty.o
lib-y += herror_msg.o
lib-y += herror_msg_and_die.o
lib-y += human_readable.o
lib-y += inet_common.o
lib-y += info_msg.o
lib-y += inode_hash.o
lib-y += isdirectory.o
lib-y += kernel_version.o
lib-y += last_char_is.o
lib-y += lineedit.o lineedit_ptr_hack.o
lib-y += llist.o
lib-y += login.o
lib-y += make_directory.o
lib-y += makedev.o
lib-y += match_fstype.o
lib-y += md5.o
# Alternative (disabled) implementation
#lib-y += md5prime.o
lib-y += messages.o
lib-y += mode_string.o
lib-y += mtab_file.o
lib-y += obscure.o
lib-y += parse_mode.o
lib-y += parse_config.o
lib-y += perror_msg.o
lib-y += perror_msg_and_die.o
lib-y += perror_nomsg.o
lib-y += perror_nomsg_and_die.o
lib-y += pidfile.o
lib-y += platform.o
lib-y += printable.o
lib-y += print_flags.o
lib-y += process_escape_sequence.o
lib-y += procps.o
lib-y += progress.o
lib-y += ptr_to_globals.o
lib-y += read.o
lib-y += read_key.o
lib-y += recursive_action.o
lib-y += remove_file.o
lib-y += restricted_shell.o
lib-y += run_shell.o
lib-y += safe_gethostname.o
lib-y += safe_poll.o
lib-y += safe_strncpy.o
lib-y += safe_write.o
lib-y += setup_environment.o
lib-y += sha1.o
lib-y += signals.o
lib-y += simplify_path.o
lib-y += single_argv.o
lib-y += skip_whitespace.o
lib-y += speed_table.o
lib-y += str_tolower.o
lib-y += strrstr.o
lib-y += time.o
lib-y += trim.o
lib-y += u_signal_names.o
lib-y += udp_io.o
lib-y += uuencode.o
lib-y += vdprintf.o
lib-y += verror_msg.o
lib-y += vfork_daemon_rexec.o
lib-y += warn_ignoring_args.o
lib-y += wfopen.o
lib-y += wfopen_input.o
lib-y += write.o
lib-y += xatonum.o
lib-y += xconnect.o
lib-y += xfuncs.o
lib-y += xfuncs_printf.o
lib-y += xfunc_die.o
lib-y += xgetcwd.o
lib-y += xgethostbyname.o
lib-y += xreadlink.o
lib-y += xrealloc_vector.o

# A mix of optimizations (why build stuff we know won't be used)
# and objects which may fail to build (SELinux on selinux-less system)
lib-$(CONFIG_SELINUX) += selinux_common.o
lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
lib-$(CONFIG_FEATURE_ASSUME_UNICODE) += unicode.o
lib-$(CONFIG_FEATURE_CHECK_NAMES) += die_if_bad_username.o

lib-$(CONFIG_LOSETUP) += loop.o
lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o

lib-$(CONFIG_ADDGROUP) += update_passwd.o
lib-$(CONFIG_ADDUSER) += update_passwd.o
lib-$(CONFIG_DELGROUP) += update_passwd.o
lib-$(CONFIG_DELUSER) += update_passwd.o

lib-$(CONFIG_PASSWD) += pw_encrypt.o update_passwd.o
lib-$(CONFIG_CHPASSWD) += pw_encrypt.o update_passwd.o
lib-$(CONFIG_CRYPTPW) += pw_encrypt.o
lib-$(CONFIG_SULOGIN) += pw_encrypt.o
lib-$(CONFIG_VLOCK) += pw_encrypt.o correct_password.o
lib-$(CONFIG_SU) += pw_encrypt.o correct_password.o
lib-$(CONFIG_LOGIN) += pw_encrypt.o correct_password.o
lib-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) += pw_encrypt.o

lib-$(CONFIG_DF) += find_mount_point.o
lib-$(CONFIG_MKFS_MINIX) += find_mount_point.o
lib-$(CONFIG_MKFS_EXT2) += find_mount_point.o
lib-$(CONFIG_MKFS_REISER) += find_mount_point.o
lib-$(CONFIG_FSCK_MINIX) += find_mount_point.o
lib-$(CONFIG_MOUNT) += find_mount_point.o

lib-$(CONFIG_HWCLOCK) += rtc.o
lib-$(CONFIG_RTCWAKE) += rtc.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_GREP) += xregcomp.o
lib-$(CONFIG_EXPR) += xregcomp.o
lib-$(CONFIG_MDEV) += xregcomp.o
lib-$(CONFIG_LESS) += xregcomp.o
lib-$(CONFIG_PGREP) += xregcomp.o
lib-$(CONFIG_PKILL) += xregcomp.o
lib-$(CONFIG_DEVFSD) += xregcomp.o
lib-$(CONFIG_FEATURE_FIND_REGEX) += xregcomp.o
