summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--package/skeleton/skeleton.mk53
-rw-r--r--system/system.mk62
3 files changed, 68 insertions, 48 deletions
diff --git a/Makefile b/Makefile
index fc86a7071b..7cab6fa7ff 100644
--- a/Makefile
+++ b/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.
diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk
index 0a8add66dc..3ae37c76a9 100644
--- a/package/skeleton/skeleton.mk
+++ b/package/skeleton/skeleton.mk
@@ -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
diff --git a/system/system.mk b/system/system.mk
new file mode 100644
index 0000000000..cab5c1df5d
--- /dev/null
+++ b/system/system.mk
@@ -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
OpenPOWER on IntegriCloud