From c02cfd6dd1303ecc9840af4e58c72ea52694bb5b Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Thu, 28 Jul 2005 15:48:46 +0000 Subject: [PATCH] * add --with-platform=FILE argument to configure, which can be used to load a set of arguments to build OMPI. So you can do something like: ./configure --with-platform=redstorm and automagically have all 10,000 arguments to configure required for Red Storm magically set * change all instances of sinclude to m4_include so that autogen will properly fail if an .m4 file isn't included properly This commit was SVN r6648. --- acinclude.m4 | 113 ++++++++++++++++++----------------- autogen.sh | 12 ++-- config/ompi_load_platform.m4 | 51 ++++++++++++++++ configure.ac | 4 ++ 4 files changed, 118 insertions(+), 62 deletions(-) create mode 100644 config/ompi_load_platform.m4 diff --git a/acinclude.m4 b/acinclude.m4 index 75f282ee54..43c1b6f7d2 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -20,71 +20,72 @@ dnl # Open MPI-specific tests # -sinclude(config/c_get_alignment.m4) -sinclude(config/c_weak_symbols.m4) +m4_include(config/c_get_alignment.m4) +m4_include(config/c_weak_symbols.m4) -sinclude(config/cxx_find_template_parameters.m4) -sinclude(config/cxx_find_template_repository.m4) -sinclude(config/cxx_have_exceptions.m4) -sinclude(config/cxx_find_exception_flags.m4) +m4_include(config/cxx_find_template_parameters.m4) +m4_include(config/cxx_find_template_repository.m4) +m4_include(config/cxx_have_exceptions.m4) +m4_include(config/cxx_find_exception_flags.m4) -sinclude(config/f77_check.m4) -sinclude(config/f77_check_type.m4) -sinclude(config/f77_find_ext_symbol_convention.m4) -sinclude(config/f77_get_alignment.m4) -sinclude(config/f77_get_fortran_handle_max.m4) -sinclude(config/f77_get_sizeof.m4) -sinclude(config/f77_purge_unsupported_kind.m4) +m4_include(config/f77_check.m4) +m4_include(config/f77_check_type.m4) +m4_include(config/f77_find_ext_symbol_convention.m4) +m4_include(config/f77_get_alignment.m4) +m4_include(config/f77_get_fortran_handle_max.m4) +m4_include(config/f77_get_sizeof.m4) +m4_include(config/f77_purge_unsupported_kind.m4) -sinclude(config/f90_check_type.m4) -sinclude(config/f90_find_module_include_flag.m4) -sinclude(config/f90_get_alignment.m4) -sinclude(config/f90_get_precision.m4) -sinclude(config/f90_get_range.m4) -sinclude(config/f90_get_sizeof.m4) -sinclude(config/f90_get_int_kind.m4) +m4_include(config/f90_check_type.m4) +m4_include(config/f90_find_module_include_flag.m4) +m4_include(config/f90_get_alignment.m4) +m4_include(config/f90_get_precision.m4) +m4_include(config/f90_get_range.m4) +m4_include(config/f90_get_sizeof.m4) +m4_include(config/f90_get_int_kind.m4) -m4_sinclude(config/ompi_objc.m4) +m4_include(config/ompi_objc.m4) -sinclude(config/ompi_try_assemble.m4) -sinclude(config/ompi_config_asm.m4) +m4_include(config/ompi_try_assemble.m4) +m4_include(config/ompi_config_asm.m4) -sinclude(config/ompi_case_sensitive_fs_setup.m4) -sinclude(config/ompi_check_broken_qsort.m4) -sinclude(config/ompi_check_optflags.m4) -sinclude(config/ompi_check_icc.m4) -sinclude(config/ompi_check_gm.m4) -sinclude(config/ompi_check_mx.m4) -sinclude(config/ompi_check_bproc.m4) -sinclude(config/ompi_check_mvapi.m4) -sinclude(config/ompi_check_openib.m4) -sinclude(config/ompi_check_package.m4) -sinclude(config/ompi_check_tm.m4) -sinclude(config/ompi_check_xgrid.m4) -sinclude(config/ompi_config_subdir.m4) -sinclude(config/ompi_config_subdir_args.m4) -sinclude(config/ompi_configure_options.m4) -sinclude(config/ompi_find_type.m4) -sinclude(config/ompi_functions.m4) -sinclude(config/ompi_get_version.m4) -sinclude(config/ompi_get_libtool_linker_flags.m4) -sinclude(config/ompi_mca.m4) -sinclude(config/ompi_setup_cc.m4) -sinclude(config/ompi_setup_cxx.m4) -sinclude(config/ompi_setup_f77.m4) -sinclude(config/ompi_setup_f90.m4) -sinclude(config/ompi_setup_libevent.m4) +m4_include(config/ompi_case_sensitive_fs_setup.m4) +m4_include(config/ompi_check_broken_qsort.m4) +m4_include(config/ompi_check_optflags.m4) +m4_include(config/ompi_check_icc.m4) +m4_include(config/ompi_check_gm.m4) +m4_include(config/ompi_check_mx.m4) +m4_include(config/ompi_check_bproc.m4) +m4_include(config/ompi_check_mvapi.m4) +m4_include(config/ompi_check_openib.m4) +m4_include(config/ompi_check_package.m4) +m4_include(config/ompi_check_tm.m4) +m4_include(config/ompi_check_xgrid.m4) +m4_include(config/ompi_config_subdir.m4) +m4_include(config/ompi_config_subdir_args.m4) +m4_include(config/ompi_configure_options.m4) +m4_include(config/ompi_find_type.m4) +m4_include(config/ompi_functions.m4) +m4_include(config/ompi_get_version.m4) +m4_include(config/ompi_get_libtool_linker_flags.m4) +m4_include(config/ompi_load_platform.m4) +m4_include(config/ompi_mca.m4) +m4_include(config/ompi_setup_cc.m4) +m4_include(config/ompi_setup_cxx.m4) +m4_include(config/ompi_setup_f77.m4) +m4_include(config/ompi_setup_f90.m4) +m4_include(config/ompi_setup_libevent.m4) -sinclude(config/ompi_check_pthread_pids.m4) -sinclude(config/ompi_config_pthreads.m4) -sinclude(config/ompi_config_solaris_threads.m4) -sinclude(config/ompi_config_threads.m4) +m4_include(config/ompi_check_pthread_pids.m4) +m4_include(config/ompi_config_pthreads.m4) +m4_include(config/ompi_config_solaris_threads.m4) +m4_include(config/ompi_config_threads.m4) # # The config/mca_no_configure_components.m4 file is generated by # autogen.sh # -sinclude(config/mca_no_configure_components.m4) +m4_include(config/mca_no_configure_components.m4) # # mca_m4_config_include.m4 is generated by autogen.sh. It includes @@ -93,9 +94,9 @@ sinclude(config/mca_no_configure_components.m4) # Some explination... There doesn't seem to be a good way to have # this include file live in config/, because autoheader does it's # analysis without taking into account the directory in which the .m4 -# file calling sinclude is in, while autoconf does take the directory +# file calling m4_include is in, while autoconf does take the directory # into account. So you end up with a situation where you need two -# directories listed in the single sinclude. If anyone knows a way +# directories listed in the single m4_include. If anyone knows a way # to move mca_m4_config_include.m4 into config/, I'd appreciate it. # -m4_sinclude(mca_m4_config_include.m4) +m4_include(mca_m4_config_include.m4) diff --git a/autogen.sh b/autogen.sh index ff14901ea7..6b144c67fc 100755 --- a/autogen.sh +++ b/autogen.sh @@ -494,12 +494,12 @@ EOF echo "AC_CONFIG_FILES([$m4conf_dir/$file])" >> "$m4conf_list_file" done - # add the sinclude of the m4 file into the mca .m4 file directly. It shouldn't - # be in a macro, so this is fairly safe to do. By this point, there should - # already be a header and all that. - # sincludes are relative to the currently included file, so need the .. to get us - # from config/ to the topsrcdir again. - echo "sinclude(${m4conf_project}/mca/${m4conf_framework}/${m4conf_component}/configure.m4)" >> "$m4conf_ompi_topdir/$mca_m4_include_file" + # add the m4_include of the m4 file into the mca .m4 file + # directly. It shouldn't be in a macro, so this is fairly safe to + # do. By this point, there should already be a header and all + # that. m4_includes are relative to the currently included file, + # so need the .. to get us from config/ to the topsrcdir again. + echo "m4_include(${m4conf_project}/mca/${m4conf_framework}/${m4conf_component}/configure.m4)" >> "$m4conf_ompi_topdir/$mca_m4_include_file" cat < Adding to top-level configure m4-configure subdirs: diff --git a/config/ompi_load_platform.m4 b/config/ompi_load_platform.m4 new file mode 100644 index 0000000000..ce1c2ade69 --- /dev/null +++ b/config/ompi_load_platform.m4 @@ -0,0 +1,51 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University. +# All rights reserved. +# Copyright (c) 2004-2005 The Trustees of the University of Tennessee. +# All rights reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OMPI_LOAD_PLATFORM() +# -------------------- +AC_DEFUN([OMPI_LOAD_PLATFORM], [ + AC_ARG_WITH([platform], + [AC_HELP_STRING([--with-platform=FILE], + [Load options for build from FILE. Options on the + command line not in FILE are used. Options on the + command line and in FILE are replaced by what is + in FILE.])]) + if test "$with_platform" = "yes" ; then + AC_MSG_ERROR([--with-platform argument must include FILE option]) + elif test "$with_platform" = "no" ; then + AC_MSG_ERROR([--without-platform is not a valid argument]) + elif test "$with_platform" != "" ; then + # make sure file exists + if test ! -r "$with_platform" ; then + AC_MSG_ERROR([platform file $with_platform not found]) + fi + + # eval into environment + OMPI_LOG_MSG([Loading environment file $with_platform, with contents below]) + OMPI_LOG_FILE([$with_platform]) + . "$with_platform" + + # see if they left us a name + if test "$OMPI_PLATFORM_LOADED" != "" ; then + platform_loaded="$OMPI_PLATFORM_LOADED" + else + platform_loaded="$with_platform" + fi + echo "Loaded platform arguments for $platform_loaded" + OMPI_LOG_MSG([Loaded platform arguments for $platform_loaded"]) + fi +]) diff --git a/configure.ac b/configure.ac index 2b0a55bca4..77452c5642 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,10 @@ AC_INIT(./ompi/mpi/c/init.c) AC_PREREQ(2.58) AC_CONFIG_AUX_DIR(./config) +# Get our platform support file. This has to be done very, very early +# because it twiddles random bits of autoconf +OMPI_LOAD_PLATFORM + # Get the version of OMPI that we are installing OMPI_GET_VERSION($srcdir/VERSION, OMPI)