diff --git a/IOR.vcproj b/IOR.vcproj
deleted file mode 100644
index c075e0f..0000000
--- a/IOR.vcproj
+++ /dev/null
@@ -1,414 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 29497a1..0000000
--- a/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-#/*****************************************************************************\
-#* *
-#* Copyright (c) 2003, The Regents of the University of California *
-#* See the file COPYRIGHT for a complete copyright notice and license. *
-#* *
-#*******************************************************************************
-#*
-#* CVS info:
-#* $RCSfile: Makefile,v $
-#* $Revision: 1.1.1.1 $
-#* $Date: 2007/10/15 23:36:54 $
-#* $Author: rklundt $
-#*
-#* Purpose:
-#* Make IOR executable.
-#*
-#* gmake posix -- IOR with only POSIX interface
-#* gmake mpiio -- IOR with only POSIX and MPIIO interfaces
-#* gmake hdf5 -- IOR with POSIX, MPIIO, and HDF5 interfaces
-#* gmake ncmpi -- IOR with POSIX, MPIIO, and NCMPI interfaces
-#* gmake all -- IOR with POSIX, MPIIO, HDF5, and NCMPI interfaces
-#* gmake clean -- remove executable and object files
-#*
-#\*****************************************************************************/
-
-SRC = ./src/C
-
-posix:
- (cd $(SRC) && $(MAKE) posix)
-
-%:
- (cd $(SRC) && $(MAKE) $@)
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..af437a6
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = src
diff --git a/README b/README
deleted file mode 100644
index 61b256d..0000000
--- a/README
+++ /dev/null
@@ -1,11 +0,0 @@
-/******************************************************************************\
-* *
-* Copyright (c) 2003, The Regents of the University of California *
-* See the file COPYRIGHT for a complete copyright notice and license. *
-* *
-\******************************************************************************/
-
-This collection of files contains the source (in /src) and Makefile for
-building IOR. In /scripts, there are scripts for simulating I/O behavior of
-various parallel applications. For more information, please read the User
-Guide.
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..169024e
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -x
+aclocal -I config || exit 1
+#libtoolize --automake --copy --force || exit 1
+autoheader || exit 1
+automake --add-missing --copy --force-missing --foreign || exit 1
+#autoconf --force --warnings=all || exit 1
+autoconf --force || exit 1
+rm -fr autom4te*.cache
+exit 0
diff --git a/config/ax_prog_cc_mpi.m4 b/config/ax_prog_cc_mpi.m4
new file mode 100644
index 0000000..091f51f
--- /dev/null
+++ b/config/ax_prog_cc_mpi.m4
@@ -0,0 +1,171 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_mpi.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_PROG_CC_MPI([MPI-WANTED-TEST[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
+#
+# DESCRIPTION
+#
+# This macro tries to find out how to compile C programs that use MPI
+# (Message Passing Interface), a standard API for parallel process
+# communication (see http://www-unix.mcs.anl.gov/mpi/). The macro has to
+# be used instead of the standard macro AC_PROG_CC and will replace the
+# standard variable CC with the found compiler.
+#
+# MPI-WANTED-TEST is used to test whether MPI is actually wanted by the
+# user. If MPI-WANTED_TEST is omitted or if it succeeds, the macro will
+# try to find out how to use MPI, if it fails, the macro will call
+# AC_PROG_CC to find a standard C compiler instead.
+#
+# When MPI is found, ACTION-IF-FOUND will be executed, if MPI is not found
+# (or MPI-WANTED-TEST fails) ACTION-IF-NOT-FOUND is executed. If
+# ACTION-IF-FOUND is not set, the macro will define HAVE_MPI.
+#
+# The following example demonstrates usage of the macro:
+#
+# # If --with-mpi=auto is used, try to find MPI, but use standard C compiler if it is not found.
+# # If --with-mpi=yes is used, try to find MPI and fail if it isn't found.
+# # If --with-mpi=no is used, use a standard C compiler instead.
+# AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi],
+# [compile with MPI (parallelization) support. If none is found,
+# MPI is not used. Default: auto])
+# ],,[with_mpi=auto])
+# #
+# AX_PROG_CC_MPI([test x"$with_mpi" != xno],[use_mpi=yes],[
+# use_mpi=no
+# if test x"$with_mpi" = xyes; then
+# AC_MSG_FAILURE([MPI compiler requested, but couldn't use MPI.])
+# else
+# AC_MSG_WARN([No MPI compiler found, won't use MPI.])
+# fi
+# ])
+#
+# LICENSE
+#
+# Copyright (c) 2010,2011 Olaf Lenz
+#
+# 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, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will 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, see .
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 1
+
+AC_DEFUN([AX_PROG_CC_MPI], [
+AC_PREREQ(2.50)
+
+# Check for compiler
+# Needs to be split off into an extra macro to ensure right expansion
+# order.
+AC_REQUIRE([_AX_PROG_CC_MPI],[_AX_PROG_CC_MPI([$1])])
+
+AS_IF([test x"$_ax_prog_cc_mpi_mpi_wanted" = xno],
+ [ _ax_prog_cc_mpi_mpi_found=no ],
+ [
+ AC_LANG_PUSH([C])
+ # test whether MPI_Init is available
+ # We do not use AC_SEARCH_LIBS here, as it caches its outcome and
+ # thus disallows corresponding calls in the other AX_PROG_*_MPI
+ # macros.
+ for lib in NONE mpi mpich; do
+ save_LIBS=$LIBS
+ if test x"$lib" = xNONE; then
+ AC_MSG_CHECKING([for function MPI_Init])
+ else
+ AC_MSG_CHECKING([for function MPI_Init in -l$lib])
+ LIBS="-l$lib $LIBS"
+ fi
+ AC_LINK_IFELSE([AC_LANG_CALL([],[MPI_Init])],
+ [ _ax_prog_cc_mpi_mpi_found=yes ],
+ [ _ax_prog_cc_mpi_mpi_found=no ])
+ AC_MSG_RESULT($_ax_prog_cc_mpi_mpi_found)
+ if test "x$_ax_prog_cc_mpi_mpi_found" = "xyes"; then
+ break;
+ fi
+ LIBS=$save_LIBS
+ done
+
+ # Check for header
+ AS_IF([test x"$_ax_prog_cc_mpi_mpi_found" = xyes], [
+ AC_MSG_CHECKING([for mpi.h])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ])],
+ [ AC_MSG_RESULT(yes)],
+ [ AC_MSG_RESULT(no)
+ _ax_prog_cc_mpi_mpi_found=no
+ ])
+ ])
+ AC_LANG_POP([C])
+])
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+AS_IF([test x"$_ax_prog_cc_mpi_mpi_found" = xyes], [
+ ifelse([$2],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$2])
+ :
+],[
+ $3
+ :
+])
+
+])dnl AX_PROG_CC_MPI
+
+dnl _AX_PROG_CC_MPI is an internal macro required by AX_PROG_CC_MPI.
+dnl To ensure the right expansion order, the main function AX_PROG_CC_MPI
+dnl has to be split into two parts.
+dnl
+dnl Known MPI C compilers:
+dnl mpicc
+dnl mpixlc_r
+dnl mpixlc
+dnl hcc
+dnl mpxlc_r
+dnl mpxlc
+dnl sxmpicc NEC SX
+dnl mpifcc Fujitsu
+dnl mpgcc
+dnl mpcc
+dnl cmpicc
+dnl cc
+dnl
+AC_DEFUN([_AX_PROG_CC_MPI], [
+ AC_ARG_VAR(MPICC,[MPI C compiler command])
+ ifelse([$1],,[_ax_prog_cc_mpi_mpi_wanted=yes],[
+ AC_MSG_CHECKING([whether to compile using MPI])
+ if $1; then
+ _ax_prog_cc_mpi_mpi_wanted=yes
+ else
+ _ax_prog_cc_mpi_mpi_wanted=no
+ fi
+ AC_MSG_RESULT($_ax_prog_cc_mpi_mpi_wanted)
+ ])
+ if test x"$_ax_prog_cc_mpi_mpi_wanted" = xyes; then
+ if test -z "$CC" && test -n "$MPICC"; then
+ CC="$MPICC"
+ else
+ AC_CHECK_TOOLS([CC], [mpicc mpixlc_r mpixlc hcc mpxlc_r mpxlc sxmpicc mpifcc mpgcc mpcc cmpicc cc gcc])
+ fi
+ fi
+ AC_PROG_CC
+])dnl _AX_PROG_CC_MPI
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..2a78dae
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,34 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.67])
+AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_SRCDIR([src/IOR.c])
+AC_CONFIG_HEADERS([config.h])
+
+AC_CANONICAL_HOST
+
+# Automake support
+AM_INIT_AUTOMAKE([$PACKAGE], [$VERSION], [check-news dist-bzip2 gnu no-define])
+AM_MAINTAINER_MODE
+
+# Checks for programs.
+AX_PROG_CC_MPI
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_CHECK_HEADERS([fcntl.h libintl.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/statfs.h sys/statvfs.h sys/time.h unistd.h wchar.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_SIZE_T
+
+# Checks for library functions.
+AC_FUNC_MALLOC
+AC_CHECK_FUNCS([getpagesize gettimeofday memset mkdir pow putenv realpath regcomp sqrt strcasecmp strchr strerror strncasecmp strstr uname])
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ src/cbif/Makefile])
+AC_OUTPUT
diff --git a/UNDOCUMENTED_OPTIONS b/doc/UNDOCUMENTED_OPTIONS
similarity index 100%
rename from UNDOCUMENTED_OPTIONS
rename to doc/UNDOCUMENTED_OPTIONS
diff --git a/USER_GUIDE b/doc/USER_GUIDE
similarity index 100%
rename from USER_GUIDE
rename to doc/USER_GUIDE
diff --git a/src/C/cbif/Makefile b/src/C/cbif/Makefile
deleted file mode 100644
index 5f65e29..0000000
--- a/src/C/cbif/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-all:
- $(CC) cbif.c -o cbif
-
-clean:
- rm -f cbif
diff --git a/src/C/IOR-aiori.h b/src/IOR-aiori.h
similarity index 100%
rename from src/C/IOR-aiori.h
rename to src/IOR-aiori.h
diff --git a/src/C/IOR.c b/src/IOR.c
similarity index 100%
rename from src/C/IOR.c
rename to src/IOR.c
diff --git a/src/C/IOR.h b/src/IOR.h
similarity index 100%
rename from src/C/IOR.h
rename to src/IOR.h
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..4b9ce6e
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS = cbif
+
+bin_PROGRAMS = ior
+
+# N.B. "NCMPI" is an outdated name for pnetcdf (parallel netcdf)
+ior_SOURCES = IOR.c utilities.c parse_options.c \
+ IOR.h aiori.h iordef.h defaults.h IOR-aiori.h \
+ aiori-POSIX.c aiori-noMPIIO.c aiori-noHDF5.c aiori-noNCMPI.c
+ior_CFLAGS =
+ior_LDADD = -lm
diff --git a/src/C/aiori-HDF5.c b/src/aiori-HDF5.c
similarity index 100%
rename from src/C/aiori-HDF5.c
rename to src/aiori-HDF5.c
diff --git a/src/C/aiori-MPIIO.c b/src/aiori-MPIIO.c
similarity index 100%
rename from src/C/aiori-MPIIO.c
rename to src/aiori-MPIIO.c
diff --git a/src/C/aiori-NCMPI.c b/src/aiori-NCMPI.c
similarity index 100%
rename from src/C/aiori-NCMPI.c
rename to src/aiori-NCMPI.c
diff --git a/src/C/aiori-POSIX.c b/src/aiori-POSIX.c
similarity index 100%
rename from src/C/aiori-POSIX.c
rename to src/aiori-POSIX.c
diff --git a/src/C/aiori-noHDF5.c b/src/aiori-noHDF5.c
similarity index 100%
rename from src/C/aiori-noHDF5.c
rename to src/aiori-noHDF5.c
diff --git a/src/C/aiori-noMPIIO.c b/src/aiori-noMPIIO.c
similarity index 100%
rename from src/C/aiori-noMPIIO.c
rename to src/aiori-noMPIIO.c
diff --git a/src/C/aiori-noNCMPI.c b/src/aiori-noNCMPI.c
similarity index 100%
rename from src/C/aiori-noNCMPI.c
rename to src/aiori-noNCMPI.c
diff --git a/src/C/aiori.h b/src/aiori.h
similarity index 100%
rename from src/C/aiori.h
rename to src/aiori.h
diff --git a/src/cbif/Makefile.am b/src/cbif/Makefile.am
new file mode 100644
index 0000000..6705835
--- /dev/null
+++ b/src/cbif/Makefile.am
@@ -0,0 +1,2 @@
+bin_PROGRAMS = cbif
+cbif_SOURCES = cbif.c
diff --git a/src/C/cbif/cbif.c b/src/cbif/cbif.c
similarity index 100%
rename from src/C/cbif/cbif.c
rename to src/cbif/cbif.c
diff --git a/src/C/defaults.h b/src/defaults.h
similarity index 100%
rename from src/C/defaults.h
rename to src/defaults.h
diff --git a/src/C/iordef.h b/src/iordef.h
similarity index 100%
rename from src/C/iordef.h
rename to src/iordef.h
diff --git a/src/C/Makefile b/src/old.Makefile
similarity index 100%
rename from src/C/Makefile
rename to src/old.Makefile
diff --git a/src/C/Makefile.config b/src/old.Makefile.config
similarity index 100%
rename from src/C/Makefile.config
rename to src/old.Makefile.config
diff --git a/src/C/parse_options.c b/src/parse_options.c
similarity index 100%
rename from src/C/parse_options.c
rename to src/parse_options.c
diff --git a/src/C/utilities.c b/src/utilities.c
similarity index 100%
rename from src/C/utilities.c
rename to src/utilities.c
diff --git a/src/C/win/getopt.c b/src/win/getopt.c
similarity index 100%
rename from src/C/win/getopt.c
rename to src/win/getopt.c
diff --git a/src/C/win/getopt.h b/src/win/getopt.h
similarity index 100%
rename from src/C/win/getopt.h
rename to src/win/getopt.h