Files
buildroot/package/coreutils/coreutils.mk
Markus Mayer 7989818466 package/coreutils: allow building as individual binaries
We add configuration option BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES
so that coreutils can be built and installed as individual binaries.
It can be used if the target file system doesn't support symlinks or
symlinks are undesirable.

The approach is modelled after Busybox's similarly named configuration
option.

Signed-off-by: Markus Mayer <mmayer@broadcom.com>
[Thomas: adjust to previous preparation commits.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-06-20 21:04:19 +02:00

158 lines
4.5 KiB
Makefile

################################################################################
#
# coreutils
#
################################################################################
COREUTILS_VERSION = 8.30
COREUTILS_SITE = $(BR2_GNU_MIRROR)/coreutils
COREUTILS_SOURCE = coreutils-$(COREUTILS_VERSION).tar.xz
COREUTILS_LICENSE = GPL-3.0+
COREUTILS_LICENSE_FILES = COPYING
# coreutils-01-fix-for-dummy-man-usage.patch triggers autoreconf on build
COREUTILS_AUTORECONF = YES
COREUTILS_GETTEXTIZE = YES
COREUTILS_CONF_OPTS = --disable-rpath \
$(if $(BR2_TOOLCHAIN_USES_MUSL),--with-included-regex)
ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)
COREUTILS_CONF_OPTS += --disable-single-binary
else
COREUTILS_CONF_OPTS += --enable-single-binary=symlinks
endif
COREUTILS_CONF_ENV = ac_cv_c_restrict=no \
ac_cv_func_chown_works=yes \
ac_cv_func_euidaccess=no \
ac_cv_func_fstatat=yes \
ac_cv_func_getdelim=yes \
ac_cv_func_getgroups=yes \
ac_cv_func_getgroups_works=yes \
ac_cv_func_getloadavg=no \
ac_cv_func_lstat_dereferences_slashed_symlink=yes \
ac_cv_func_lstat_empty_string_bug=no \
ac_cv_func_strerror_r_char_p=no \
ac_cv_func_strnlen_working=yes \
ac_cv_func_strtod=yes \
ac_cv_func_working_mktime=yes \
ac_cv_have_decl_strerror_r=yes \
ac_cv_have_decl_strnlen=yes \
ac_cv_lib_getloadavg_getloadavg=no \
ac_cv_lib_util_getloadavg=no \
ac_fsusage_space=yes \
ac_use_included_regex=no \
am_cv_func_working_getline=yes \
fu_cv_sys_stat_statfs2_bsize=yes \
gl_cv_func_getcwd_null=yes \
gl_cv_func_getcwd_path_max=yes \
gl_cv_func_gettimeofday_clobber=no \
gl_cv_func_fstatat_zero_flag=no \
gl_cv_func_link_follows_symlink=no \
gl_cv_func_re_compile_pattern_working=yes \
gl_cv_func_svid_putenv=yes \
gl_cv_func_tzset_clobber=no \
gl_cv_func_working_mkstemp=yes \
gl_cv_func_working_utimes=yes \
gl_getline_needs_run_time_check=no \
gl_cv_have_proc_uptime=yes \
utils_cv_localtime_cache=no \
PERL=missing \
MAKEINFO=true \
INSTALL_PROGRAM=$(INSTALL)
COREUTILS_BIN_PROGS = base64 cat chgrp chmod chown cp date dd df dir echo false \
kill link ln ls mkdir mknod mktemp mv nice printenv pwd rm rmdir \
vdir sleep stty sync touch true uname join
ifeq ($(BR2_PACKAGE_ACL),y)
COREUTILS_DEPENDENCIES += acl
else
COREUTILS_CONF_OPTS += --disable-acl
endif
ifeq ($(BR2_PACKAGE_ATTR),y)
COREUTILS_DEPENDENCIES += attr
else
COREUTILS_CONF_OPTS += --disable-xattr
endif
COREUTILS_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)
# It otherwise fails to link properly, not mandatory though
ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)
COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr
endif
ifeq ($(BR2_PACKAGE_GMP),y)
COREUTILS_DEPENDENCIES += gmp
else
COREUTILS_CONF_OPTS += --without-gmp
endif
ifeq ($(BR2_PACKAGE_LIBCAP),y)
COREUTILS_DEPENDENCIES += libcap
else
COREUTILS_CONF_OPTS += --disable-libcap
endif
ifeq ($(BR2_PACKAGE_OPENSSL),y)
COREUTILS_CONF_OPTS += --with-openssl=yes
COREUTILS_DEPENDENCIES += openssl
endif
ifeq ($(BR2_ROOTFS_MERGED_USR),)
# We want to move a few binaries from /usr/bin to /bin. In the case of
# coreutils being built as multi-call binary, we do so by re-creating
# the corresponding symlinks. If coreutils is built with individual
# binaries, we actually move the binaries.
ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)
define COREUTILS_FIX_BIN_LOCATION
$(foreach f,$(COREUTILS_BIN_PROGS), \
mv $(TARGET_DIR)/usr/bin/$(f) $(TARGET_DIR)/bin
)
endef
else
define COREUTILS_FIX_BIN_LOCATION
# some things go in /bin rather than /usr/bin
$(foreach f,$(COREUTILS_BIN_PROGS), \
rm -f $(TARGET_DIR)/usr/bin/$(f) && \
ln -sf ../usr/bin/coreutils $(TARGET_DIR)/bin/$(f)
)
endef
endif
COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_BIN_LOCATION
endif
ifeq ($(BR2_STATIC_LIBS),y)
COREUTILS_CONF_OPTS += --enable-no-install-program=stdbuf
endif
# link for archaic shells
ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)
define COREUTILS_CREATE_TEST_SYMLINK
ln -fs test $(TARGET_DIR)/usr/bin/[
endef
else
define COREUTILS_CREATE_TEST_SYMLINK
ln -fs coreutils $(TARGET_DIR)/usr/bin/[
endef
endif
COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CREATE_TEST_SYMLINK
# gnu thinks chroot is in bin, debian thinks it's in sbin
ifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)
define COREUTILS_FIX_CHROOT_LOCATION
mv $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin
endef
else
define COREUTILS_FIX_CHROOT_LOCATION
rm -f $(TARGET_DIR)/usr/bin/chroot
ln -sf ../bin/coreutils $(TARGET_DIR)/usr/sbin/chroot
endef
endif
COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_CHROOT_LOCATION
$(eval $(autotools-package))