From: Gwendal Grignou Date: Wed, 19 Apr 2017 23:33:48 +0000 (-0700) Subject: build: allow cros-compilation on chromeOS X-Git-Tag: v2022.05.01~2076 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=5d20084fefaf09e86be26d7c71bd1c7ac2a2b35c;ds=sidebyside build: allow cros-compilation on chromeOS - Request LIBTOOL to be used - Set topbuildir based on a Makefile variable to call libtool - Use /usr/local instead of /var for xfstest final location - Move macros from aclocal.m4 to acinclude.m4, aclocal.m4 is autogenerated. - Use autoconf variables @prefix@, @exec_prefix@. The regular way of compiling xfstests - make - remains. But it now runs autoreconf and libtoolize -i to produce a valid configure. Verified with 'make install --dry-run' that files are installed at the same place. Verified compiling in chromeOS chroot works as well. [eguan: resolve merge conflicts and update .gitignore and remove generated files by realclean] Signed-off-by: Gwendal Grignou Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- diff --git a/.gitignore b/.gitignore index ded4a615..c049befd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,10 +9,23 @@ /results # autoconf generated files +/aclocal.m4 /autom4te.cache /configure +/config.guess /config.log /config.status +/config.sub +/m4/libtool.m4 +/m4/ltoptions.m4 +/m4/ltsugar.m4 +/m4/ltversion.m4 +/m4/lt~obsolete.m4 + +# libtool +/libtool +/install-sh +/ltmain.sh # build system /include/builddefs diff --git a/Makefile b/Makefile index 30d8747d..ebf5c03b 100644 --- a/Makefile +++ b/Makefile @@ -41,10 +41,13 @@ endif SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz -CONFIGURE = configure include/builddefs include/config.h +CONFIGURE = configure include/builddefs include/config.h \ + aclocal.m4 config.guess config.sub install-sh ltmain.sh \ + m4/libtool.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ + m4/lt~obsolete.m4 LSRCFILES = configure configure.ac aclocal.m4 README VERSION LDIRT = config.log .ltdep .dep config.status config.cache confdefs.h \ - conftest* check.log check.time + conftest* check.log check.time libtool ifeq ($(HAVE_BUILDDEFS), yes) LDIRT += $(SRCTAR) @@ -76,12 +79,13 @@ clean: # if configure hasn't run, nothing to clean endif configure: configure.ac - autoheader - autoconf + autoreconf --include=m4 + libtoolize -i include/builddefs include/config.h: configure ./configure \ - --libexecdir=/usr/lib + --libexecdir=/usr/lib \ + --exec_prefix=/var/lib aclocal.m4:: aclocal --acdir=`pwd`/m4 --output=$@ diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 00000000..a605c01c --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,45 @@ +dnl Copyright (C) 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +AC_DEFUN([AC_PACKAGE_WANT_LINUX_FIEMAP_H], + [ AC_CHECK_HEADERS([linux/fiemap.h], [ have_fiemap=true ], [ have_fiemap=false ]) + AC_SUBST(have_fiemap) + ]) + +AC_DEFUN([AC_PACKAGE_WANT_LINUX_PRCTL_H], + [ AC_CHECK_HEADERS([sys/prctl.h], [ have_prctl=true ], [ have_prctl=false ]) + AC_SUBST(have_prctl) + ]) + +AC_DEFUN([AC_PACKAGE_WANT_LINUX_FS_H], + [ AC_CHECK_HEADER([linux/fs.h]) + ]) + +AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], + [ AC_MSG_CHECKING([for fallocate]) + AC_TRY_LINK([ +#define _GNU_SOURCE +#define _FILE_OFFSET_BITS 64 +#include +#include ], + [ fallocate(0, 0, 0, 0); ], + [ have_fallocate=true; AC_MSG_RESULT(yes) ], + [ have_fallocate=false; AC_MSG_RESULT(no) ]) + AC_SUBST(have_fallocate) + ]) + +AC_DEFUN([AC_PACKAGE_WANT_OPEN_BY_HANDLE_AT], + [ AC_MSG_CHECKING([for open_by_handle_at]) + AC_TRY_LINK([ +#define _GNU_SOURCE +#include + ], + [ + struct file_handle fh; + open_by_handle_at(0, &fh, 0); + ], + [ have_open_by_handle_at=true; AC_MSG_RESULT(yes) ], + [ have_open_by_handle_at=false; AC_MSG_RESULT(no) ]) + AC_SUBST(have_open_by_handle_at) + ]) diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index 829fa101..00000000 --- a/aclocal.m4 +++ /dev/null @@ -1,65 +0,0 @@ -# generated automatically by aclocal 1.11 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -AC_DEFUN([AC_PACKAGE_WANT_LINUX_FIEMAP_H], - [ AC_CHECK_HEADERS([linux/fiemap.h], [ have_fiemap=true ], [ have_fiemap=false ]) - AC_SUBST(have_fiemap) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_LINUX_PRCTL_H], - [ AC_CHECK_HEADERS([sys/prctl.h], [ have_prctl=true ], [ have_prctl=false ]) - AC_SUBST(have_prctl) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_LINUX_FS_H], - [ AC_CHECK_HEADER([linux/fs.h]) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], - [ AC_MSG_CHECKING([for fallocate]) - AC_TRY_LINK([ -#define _GNU_SOURCE -#define _FILE_OFFSET_BITS 64 -#include -#include ], - [ fallocate(0, 0, 0, 0); ], - [ have_fallocate=true; AC_MSG_RESULT(yes) ], - [ have_fallocate=false; AC_MSG_RESULT(no) ]) - AC_SUBST(have_fallocate) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_OPEN_BY_HANDLE_AT], - [ AC_MSG_CHECKING([for open_by_handle_at]) - AC_TRY_LINK([ -#define _GNU_SOURCE -#include - ], - [ - struct file_handle fh; - open_by_handle_at(0, &fh, 0); - ], - [ have_open_by_handle_at=true; AC_MSG_RESULT(yes) ], - [ have_open_by_handle_at=false; AC_MSG_RESULT(no) ]) - AC_SUBST(have_open_by_handle_at) - ]) -m4_include([m4/multilib.m4]) -m4_include([m4/package_acldev.m4]) -m4_include([m4/package_aiodev.m4]) -m4_include([m4/package_attrdev.m4]) -m4_include([m4/package_dmapidev.m4]) -m4_include([m4/package_gdbmdev.m4]) -m4_include([m4/package_globals.m4]) -m4_include([m4/package_ssldev.m4]) -m4_include([m4/package_utilies.m4]) -m4_include([m4/package_uuiddev.m4]) -m4_include([m4/package_xfslibs.m4]) diff --git a/configure.ac b/configure.ac index 1285bf4e..5ddaadc2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,6 @@ AC_INIT([xfstests], [1.1.1]) -AC_PREREQ(2.50) +AC_CONFIG_MACRO_DIR([m4]) +LT_INIT AC_CONFIG_SRCDIR([src/xfsctl.c]) AC_PACKAGE_GLOBALS(xfstests) AC_PACKAGE_UTILITIES(xfstests) diff --git a/include/builddefs.in b/include/builddefs.in index 27250371..952a3e03 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -7,6 +7,8 @@ ifndef _BUILDDEFS_INCLUDED_ _BUILDDEFS_INCLUDED_ = 1 +top_builddir=$(TOPDIR) + DEBUG = @debug_build@ OPTIMIZER = @opt_build@ MALLOCLIB = @malloc_lib@ @@ -24,6 +26,7 @@ LIBUUID = @libuuid@ LIBHANDLE = @libhdl@ LIBDM = @libdm@ LIBTEST = $(TOPDIR)/lib/libtest.la +prefix = @prefix@ PKG_NAME = @pkg_name@ PKG_USER = @pkg_user@ @@ -32,10 +35,8 @@ PKG_RELEASE = @pkg_release@ PKG_VERSION = @pkg_version@ PKG_PLATFORM = @pkg_platform@ PKG_DISTRIBUTION= @pkg_distribution@ -PKG_SBIN_DIR = @sbindir@ -# A bit of a hack; by rights only state should probably go here -# But for now ... -PKG_LIB_DIR = /var/lib/@pkg_name@ +PKG_LIB_DIR = $(DESTDIR)@exec_prefix@/@pkg_name@ + CC = @cc@ AWK = @awk@ diff --git a/install-sh b/install-sh deleted file mode 100755 index 58e7b586..00000000 --- a/install-sh +++ /dev/null @@ -1,259 +0,0 @@ -#! /bin/bash -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# -# This script emulates bsd install and also recognises -# two environment variables, with the following semantics :- -# -# $DIST_MANIFEST - if set, the name of the file to append manifest -# information in the following format: -# File : f mode owner group src target -# Directory: d mode owner group target -# Symlink : l linkval target -# -# $DIST_ROOT - if set, prepend to target -# -# The sematics of all combinations of these two variables -# are as follows: -# -# $DIST_MANIFEST? $DIST_ROOT? | Copy? Append Manifest? -# -----------------------------+-------------------------- -# not set not set | yes no -# not set set | yes no -# set not set | no yes -# set set | yes yes -# -_usage() { - echo "Usage: $prog [-o owner] [-g group] [-m mode] -d directory" - echo "or $prog [-D] [-o owner] [-g group] [-m mode] file directory/file" - echo "or $prog [-o owner] [-g group] [-m mode] file [file ...] directory" - echo "or $prog -S file target (creates \"target\" symlink)" - echo "" - echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the" - echo "behaviour of this command - see comments in the script." - echo "The -D flag is only available for the second usage, and causes" - echo "the target directory to be created before installing the file." - echo "" - exit 1 -} - -_chown () -{ - _st=255 - if [ $# -eq 3 ] ; then - chown $1:$2 $3 - _st=$? - if [ $_st -ne 0 ] ; then - if [ $REAL_UID != '0' ] ; then - if [ ! -f $DIST_ROOT/.chown.quite ] ; then - echo '===============================================' - echo Ownership of files under ${DIST_ROOT:-/} - echo cannot be changed - echo '===============================================' - if [ -n "$DIST_ROOT" ] ; then - touch $DIST_ROOT/.chown.quite - fi - fi - _st=0 - fi - fi - fi - - return $_st -} - - -_manifest () -{ - echo $* | sed -e 's/\/\//\//g' >>${DIST_MANIFEST:-/dev/null} -} - -prog=`basename $0` -HERE=`pwd` -dflag=false -Dflag=false -Sflag=false -DIRMODE=755 -FILEMODE=644 -OWNER=`id -u` -GROUP=`id -g` -REAL_UID=$OWNER - -# default is to install and don't append manifest -INSTALL=true -MANIFEST=: - -: ${DIST_ROOT:=${DESTDIR}} - -[ -n "$DIST_MANIFEST" -a -z "$DIST_ROOT" ] && INSTALL=false -[ -n "$DIST_MANIFEST" ] && MANIFEST="_manifest" - -[ $# -eq 0 ] && _usage - -if $INSTALL -then - CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod; CHOWN=_chown -else - CP=true; LN=true; MKDIR=true; CHMOD=true; CHOWN=true -fi - -[ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true - -while getopts "Dcm:d:S:o:g:" c $* -do - case $c in - c) - ;; - g) - GROUP=$OPTARG - ;; - o) - OWNER=$OPTARG - ;; - m) - DIRMODE=`expr $OPTARG` - FILEMODE=$DIRMODE - ;; - D) - Dflag=true - ;; - S) - symlink=$OPTARG - Sflag=true - ;; - d) - dir=$DIST_ROOT/$OPTARG - dflag=true - ;; - *) - _usage - ;; - esac -done - -shift `expr $OPTIND - 1` - -status=0 -if $dflag -then - # - # first usage - # - $MKDIR -p $dir - status=$? - if [ $status -eq 0 ] - then - $CHMOD $DIRMODE $dir - status=$? - fi - if [ $status -eq 0 ] - then - $CHOWN $OWNER $GROUP $dir - status=$? - fi - $MANIFEST d $DIRMODE $OWNER $GROUP ${dir#$DIST_ROOT} -elif $Sflag -then - # - # fourth usage (symlink) - # - if [ $# -ne 1 ] - then - _usage - else - target=$DIST_ROOT/$1 - fi - $LN -s -f $symlink $target - status=$? - $MANIFEST l $symlink ${target#$DIST_ROOT} -else - list="" - dir="" - if [ $# -eq 2 ] - then - # - # second usage - # - f=$1 - dir=$DIST_ROOT/$2 - if $Dflag - then - mkdir -p `dirname $dir` - fi - $CP $f $dir - status=$? - if [ $status -eq 0 ] - then - if [ -f $dir/$f ] - then - $CHMOD $FILEMODE $dir/$f - status=$? - if [ $status -eq 0 ] - then - $CHOWN $OWNER $GROUP $dir/$f - status=$? - fi - $MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f - else - $CHMOD $FILEMODE $dir - status=$? - if [ $status -eq 0 ] - then - $CHOWN $OWNER $GROUP $dir - status=$? - fi - $MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$dir ${dir#$DIST_ROOT} - fi - fi - else - # - # third usage - # - n=1 - while [ $# -gt 0 ] - do - if [ $# -gt 1 ] - then - list="$list $1" - else - dir=$DIST_ROOT/$1 - fi - shift - done - - # echo DIR=$dir list=\"$list\" - for f in $list - do - $CP $f $dir - status=$? - if [ $status -eq 0 ] - then - $CHMOD $FILEMODE $dir/$f - status=$? - if [ $status -eq 0 ] - then - $CHOWN $OWNER $GROUP $dir/$f - status=$? - fi - $MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f - fi - [ $status -ne 0 ] && break - done - fi -fi - -exit $status