mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-23 13:33:28 +08:00
system: provide package-wide system variables and macros
Some macros, soon some variables, currently defined in the skeleton are going to be used by other packages. Some of those variables will be used as Makefile conditions (e.g. in ifeq() conditions), so they *must* be defined before being used. Since the skeleton package, starting with an 's', is included quite late, those variables would not be available to most packages. Offload the existing macros into the new system/system.mk file, that is included early, before any package is. Rename the macros to appropriate names. Future commits will add new macros and variables in that file. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
92d4b3e8dd
commit
2de968f03a
1
Makefile
1
Makefile
@ -479,6 +479,7 @@ all: world
|
||||
# may rely on it.
|
||||
include Makefile.legacy
|
||||
|
||||
include system/system.mk
|
||||
include package/Makefile.in
|
||||
# arch/arch.mk.* must be after package/Makefile.in because it may need to
|
||||
# complement variables defined therein, like BR_NO_CHECK_HASH_FOR.
|
||||
|
@ -14,34 +14,6 @@ SKELETON_ADD_SKELETON_DEPENDENCY = NO
|
||||
# The skeleton also handles the merged /usr case in the sysroot
|
||||
SKELETON_INSTALL_STAGING = YES
|
||||
|
||||
############
|
||||
# Macros available for use by any skeleton package:
|
||||
# - SKELETON_RSYNC
|
||||
# - SKELETON_LIB_SYMLINK
|
||||
|
||||
# This function rsyncs the skeleton directory in $(1) to the destination
|
||||
# in $(2), which should be either $(TARTGET_DIR) or $(STAGING_DIR)
|
||||
define SKELETON_RSYNC
|
||||
rsync -a --ignore-times $(RSYNC_VCS_EXCLUSIONS) \
|
||||
--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
|
||||
$(1)/ $(2)/
|
||||
endef
|
||||
|
||||
# Make a symlink lib32->lib or lib64->lib as appropriate.
|
||||
# MIPS64/n32 requires lib32 even though it's a 64-bit arch.
|
||||
# $(1): base dir (either staging or target)
|
||||
ifeq ($(BR2_ARCH_IS_64)$(BR2_MIPS_NABI32),y)
|
||||
define SKELETON_LIB_SYMLINK
|
||||
ln -snf lib $(1)/lib64
|
||||
ln -snf lib $(1)/usr/lib64
|
||||
endef
|
||||
else
|
||||
define SKELETON_LIB_SYMLINK
|
||||
ln -snf lib $(1)/lib32
|
||||
ln -snf lib $(1)/usr/lib32
|
||||
endef
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_ROOTFS_SKELETON_CUSTOM),y)
|
||||
|
||||
SKELETON_PATH = $(call qstrip,$(BR2_ROOTFS_SKELETON_CUSTOM_PATH))
|
||||
@ -93,25 +65,10 @@ SKELETON_PATH = system/skeleton
|
||||
|
||||
endif # ! custom skeleton
|
||||
|
||||
# This function handles the merged or non-merged /usr cases
|
||||
ifeq ($(BR2_ROOTFS_MERGED_USR),y)
|
||||
define SKELETON_USR_SYMLINKS_OR_DIRS
|
||||
ln -snf usr/bin $(1)/bin
|
||||
ln -snf usr/sbin $(1)/sbin
|
||||
ln -snf usr/lib $(1)/lib
|
||||
endef
|
||||
else
|
||||
define SKELETON_USR_SYMLINKS_OR_DIRS
|
||||
$(INSTALL) -d -m 0755 $(1)/bin
|
||||
$(INSTALL) -d -m 0755 $(1)/sbin
|
||||
$(INSTALL) -d -m 0755 $(1)/lib
|
||||
endef
|
||||
endif
|
||||
|
||||
define SKELETON_INSTALL_TARGET_CMDS
|
||||
$(call SKELETON_RSYNC,$(SKELETON_PATH),$(TARGET_DIR))
|
||||
$(call SKELETON_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR))
|
||||
$(call SKELETON_LIB_SYMLINK,$(TARGET_DIR))
|
||||
$(call SYSTEM_RSYNC,$(SKELETON_PATH),$(TARGET_DIR))
|
||||
$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR))
|
||||
$(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR))
|
||||
$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
|
||||
$(TARGET_DIR_WARNING_FILE)
|
||||
endef
|
||||
@ -126,8 +83,8 @@ define SKELETON_INSTALL_STAGING_CMDS
|
||||
$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/bin
|
||||
$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/sbin
|
||||
$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include
|
||||
$(call SKELETON_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))
|
||||
$(call SKELETON_LIB_SYMLINK,$(STAGING_DIR))
|
||||
$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))
|
||||
$(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR))
|
||||
endef
|
||||
|
||||
# The TARGET_FINALIZE_HOOKS must be sourced only if the users choose to use the
|
||||
|
62
system/system.mk
Normal file
62
system/system.mk
Normal file
@ -0,0 +1,62 @@
|
||||
################################################################################
|
||||
#
|
||||
# system-related variables and macros
|
||||
#
|
||||
################################################################################
|
||||
|
||||
# This file exists to define variables and macros that pertain to the system
|
||||
# settings, like rsyncing a directory for skeletons, or the /lib vs. /usr/lib
|
||||
# symlink handling.
|
||||
#
|
||||
# Some variables may be used as conditions in Makefile code, so they must be
|
||||
# defined properly before they are used; this file is included early, before
|
||||
# any package is.
|
||||
|
||||
# - SYSTEM_USR_SYMLINKS_OR_DIRS
|
||||
# create /lib, /bin and /sbin, either as directories or as symlinks to
|
||||
# their /usr conterparts
|
||||
#
|
||||
# - SYSTEM_RSYNC
|
||||
# rsync $(1) to $(2), with proper exclusions and rights
|
||||
#
|
||||
# - SYSTEM_LIB_SYMLINK
|
||||
# create the appropriate /lib{32,64} symlinks
|
||||
#
|
||||
|
||||
# This function handles the merged or non-merged /usr cases
|
||||
ifeq ($(BR2_ROOTFS_MERGED_USR),y)
|
||||
define SYSTEM_USR_SYMLINKS_OR_DIRS
|
||||
ln -snf usr/bin $(1)/bin
|
||||
ln -snf usr/sbin $(1)/sbin
|
||||
ln -snf usr/lib $(1)/lib
|
||||
endef
|
||||
else
|
||||
define SYSTEM_USR_SYMLINKS_OR_DIRS
|
||||
$(INSTALL) -d -m 0755 $(1)/bin
|
||||
$(INSTALL) -d -m 0755 $(1)/sbin
|
||||
$(INSTALL) -d -m 0755 $(1)/lib
|
||||
endef
|
||||
endif
|
||||
|
||||
# This function rsyncs the skeleton directory in $(1) to the destination
|
||||
# in $(2), which should be either $(TARTGET_DIR) or $(STAGING_DIR)
|
||||
define SYSTEM_RSYNC
|
||||
rsync -a --ignore-times $(RSYNC_VCS_EXCLUSIONS) \
|
||||
--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
|
||||
$(1)/ $(2)/
|
||||
endef
|
||||
|
||||
# Make a symlink lib32->lib or lib64->lib as appropriate.
|
||||
# MIPS64/n32 requires lib32 even though it's a 64-bit arch.
|
||||
# $(1): base dir (either staging or target)
|
||||
ifeq ($(BR2_ARCH_IS_64)$(BR2_MIPS_NABI32),y)
|
||||
define SYSTEM_LIB_SYMLINK
|
||||
ln -snf lib $(1)/lib64
|
||||
ln -snf lib $(1)/usr/lib64
|
||||
endef
|
||||
else
|
||||
define SYSTEM_LIB_SYMLINK
|
||||
ln -snf lib $(1)/lib32
|
||||
ln -snf lib $(1)/usr/lib32
|
||||
endef
|
||||
endif
|
Loading…
Reference in New Issue
Block a user