diff --git a/.gitignore b/.gitignore index fefe13c93c..f1d1b9c6f8 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ config.log config.status config.cache config/Toplevel.mk +config/Paths.mk build-* dist/* diff --git a/config/Paths.mk.in b/config/Paths.mk.in new file mode 100644 index 0000000000..507b6d1744 --- /dev/null +++ b/config/Paths.mk.in @@ -0,0 +1,37 @@ +# Xen system configuration +# ======================== +# +# Xen uses a set of variables for system configuration and at build time, +# because of this these variables are defined on one master input source file +# and is generated after running ./configure. The master source is located +# on the xen source tree at under config/Paths.mk.in and it is used to +# generate shell or header files by the build system upon demand through the +# use of the helper makefile helper buildmakevars2file(). +# +# For more documentation you can refer to the wiki: +# +# http://wiki.xen.org/wiki/Category:Host_Configuration#System_wide_xen_configuration + +SBINDIR := @SBINDIR@ +BINDIR := @BINDIR@ +LIBEXEC := @LIBEXEC@ + +SHAREDIR := @SHAREDIR@ +LIBDIR := @LIBDIR@ + +XEN_RUN_DIR := @XEN_RUN_DIR@ +XEN_LOG_DIR := @XEN_LOG_DIR@ +XEN_LIB_STORED := @XEN_LIB_STORED@ + +CONFIG_DIR := @CONFIG_DIR@ +XEN_LOCK_DIR := @XEN_LOCK_DIR@ +XEN_PAGING_DIR := @XEN_PAGING_DIR@ + +PRIVATE_PREFIX := @PRIVATE_PREFIX@ +PRIVATE_PREFIX := @PKG_XEN_PREFIX@ +PRIVATE_BINDIR := @PRIVATE_BINDIR@ + +XENFIRMWAREDIR := @XENFIRMWAREDIR@ + +XEN_CONFIG_DIR := @XEN_CONFIG_DIR@ +XEN_SCRIPT_DIR := @XEN_SCRIPT_DIR@ diff --git a/config/Stubdom.mk.in b/config/Stubdom.mk.in index 302842e2e5..6bce206050 100644 --- a/config/Stubdom.mk.in +++ b/config/Stubdom.mk.in @@ -1,4 +1,5 @@ # Prefix and install folder +include $(XEN_ROOT)/config/Paths.mk prefix := @prefix@ PREFIX := $(prefix) exec_prefix := @exec_prefix@ diff --git a/configure b/configure index d5c8500786..1ff0a44d3e 100755 --- a/configure +++ b/configure @@ -594,6 +594,23 @@ stubdom tools xen subdirs +XEN_PAGING_DIR +XEN_LOCK_DIR +XEN_SCRIPT_DIR +XEN_CONFIG_DIR +CONFIG_DIR +XENFIRMWAREDIR +PRIVATE_BINDIR +PKG_XEN_PREFIX +PRIVATE_PREFIX +SHAREDIR +XEN_LIB_STORED +XEN_LOG_DIR +XEN_RUN_DIR +LIBDIR +LIBEXEC +SBINDIR +BINDIR host_os host_vendor host_cpu @@ -1702,7 +1719,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_config_files="$ac_config_files ./config/Toplevel.mk" +ac_config_files="$ac_config_files config/Toplevel.mk config/Paths.mk" ac_aux_dir= @@ -1826,6 +1843,67 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + + +test "x$prefix" = "xNONE" && prefix=$ac_default_prefix +test "x$exec_prefix" = "xNONE" && exec_prefix=$ac_default_prefix + +BINDIR=$prefix/bin + + +SBINDIR=$prefix/sbin + + +LIBEXEC=$prefix/lib/xen/bin + + +LIBDIR=`eval echo $libdir` + + +XEN_RUN_DIR=/var/run/xen + + +XEN_LOG_DIR=/var/log/xen + + +XEN_LIB_STORED=/var/lib/xenstored + + +SHAREDIR=$prefix/share + + +PRIVATE_PREFIX=$LIBDIR/xen + + +PKG_XEN_PREFIX=$LIBDIR/xen + + +PRIVATE_BINDIR=$PRIVATE_PREFIX/bin + + +XENFIRMWAREDIR=$prefix/lib/xen/boot + + +CONFIG_DIR=/etc + + +XEN_CONFIG_DIR=$CONFIG_DIR/xen + + +XEN_SCRIPT_DIR=$XEN_CONFIG_DIR/scripts + + +XEN_LOCK_DIR=/var/lock + + +XEN_RUN_DIR=/var/run/xen + + +XEN_PAGING_DIR=/var/lib/xen/xenpaging @@ -2749,7 +2827,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in - "./config/Toplevel.mk") CONFIG_FILES="$CONFIG_FILES ./config/Toplevel.mk" ;; + "config/Toplevel.mk") CONFIG_FILES="$CONFIG_FILES config/Toplevel.mk" ;; + "config/Paths.mk") CONFIG_FILES="$CONFIG_FILES config/Paths.mk" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/configure.ac b/configure.ac index 6c14524049..f32f9af976 100644 --- a/configure.ac +++ b/configure.ac @@ -5,12 +5,18 @@ AC_PREREQ([2.67]) AC_INIT([Xen Hypervisor], m4_esyscmd([./version.sh ./xen/Makefile]), [xen-devel@lists.xen.org], [xen], [http://www.xen.org/]) AC_CONFIG_SRCDIR([./xen/common/kernel.c]) -AC_CONFIG_FILES([./config/Toplevel.mk]) +AC_CONFIG_FILES([ + config/Toplevel.mk + config/Paths.mk +]) AC_CANONICAL_HOST m4_include([m4/features.m4]) m4_include([m4/subsystem.m4]) +m4_include([m4/paths.m4]) + +AX_XEN_EXPAND_CONFIG() dnl mini-os is only ported to certain platforms case "$host_cpu" in diff --git a/m4/paths.m4 b/m4/paths.m4 new file mode 100644 index 0000000000..717fcd1356 --- /dev/null +++ b/m4/paths.m4 @@ -0,0 +1,61 @@ +AC_DEFUN([AX_XEN_EXPAND_CONFIG], [ +dnl expand these early so we can use this for substitutions +test "x$prefix" = "xNONE" && prefix=$ac_default_prefix +test "x$exec_prefix" = "xNONE" && exec_prefix=$ac_default_prefix + +BINDIR=$prefix/bin +AC_SUBST(BINDIR) + +SBINDIR=$prefix/sbin +AC_SUBST(SBINDIR) + +dnl XXX: this should be changed to use the passed $libexec +dnl but can be done as a second step +LIBEXEC=$prefix/lib/xen/bin +AC_SUBST(LIBEXEC) + +LIBDIR=`eval echo $libdir` +AC_SUBST(LIBDIR) + +XEN_RUN_DIR=/var/run/xen +AC_SUBST(XEN_RUN_DIR) + +XEN_LOG_DIR=/var/log/xen +AC_SUBST(XEN_LOG_DIR) + +XEN_LIB_STORED=/var/lib/xenstored +AC_SUBST(XEN_LIB_STORED) + +SHAREDIR=$prefix/share +AC_SUBST(SHAREDIR) + +PRIVATE_PREFIX=$LIBDIR/xen +AC_SUBST(PRIVATE_PREFIX) + +PKG_XEN_PREFIX=$LIBDIR/xen +AC_SUBST(PKG_XEN_PREFIX) + +PRIVATE_BINDIR=$PRIVATE_PREFIX/bin +AC_SUBST(PRIVATE_BINDIR) + +XENFIRMWAREDIR=$prefix/lib/xen/boot +AC_SUBST(XENFIRMWAREDIR) + +CONFIG_DIR=/etc +AC_SUBST(CONFIG_DIR) + +XEN_CONFIG_DIR=$CONFIG_DIR/xen +AC_SUBST(XEN_CONFIG_DIR) + +XEN_SCRIPT_DIR=$XEN_CONFIG_DIR/scripts +AC_SUBST(XEN_SCRIPT_DIR) + +XEN_LOCK_DIR=/var/lock +AC_SUBST(XEN_LOCK_DIR) + +XEN_RUN_DIR=/var/run/xen +AC_SUBST(XEN_RUN_DIR) + +XEN_PAGING_DIR=/var/lib/xen/xenpaging +AC_SUBST(XEN_PAGING_DIR) +]) diff --git a/tools/Rules.mk b/tools/Rules.mk index 9ac8541475..0aa1e6bdc6 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -5,6 +5,7 @@ all: -include $(XEN_ROOT)/config/Tools.mk include $(XEN_ROOT)/Config.mk +include $(XEN_ROOT)/config/Paths.mk export _INSTALL := $(INSTALL) INSTALL = $(XEN_ROOT)/tools/cross-install