On Wed, Nov 07, 2007 at 09:45:24AM +0000, Karsten Bolding wrote: > Hello
Hi! > Are there any known issues with ubuntus version of libtool. When I run Libtool is always an issue ;) To circumvent this, we have a Makefile fetching the right versions, compiling the whole autotools chain, prepends the new PATH and then compiles OMPI. Place the attached Makefile as i.e. /tmp/my-ompi/Makefile, get the svn snapshot into /tmp/my-ompi/ompi and just run "make" in /tmp/my-ompi/. Over here, it looks like this: adi@ipc654:/var/tmp/meta-ompi/trunk$ ls Makefile Rakefile cc.build.job cunit ompi test tool unittests You don't need to care about the other files, just to outline where to place the OMPI source. You might want to change CONFIGURE_FLAGS in the Makefile, you'd probably comment out the debug line and go for the second variant. HTH -- Cluster and Metacomputing Working Group Friedrich-Schiller-Universität Jena, Germany private: http://adi.thur.de
# Meta-Makefile to build OpenMPI. # # (c) Christian Kauhaus <kauh...@inf.uni-jena.de> # -- $Id: Makefile 3640 2007-10-09 14:23:11Z ckauhaus $ SHELL = bash # # Configuration section # ARCH := $(shell uname -m -s | tr ' ' '-') # but compile as 32bit even on amd64 ifeq ($(ARCH),Linux-x86_64) OMPI_CFLAGS = -m32 OMPI_LDFLAGS = -Wl,-melf_i386 endif # BuildBot does not set PWD on directory changes PWD := $(shell pwd | tr -d '\n') OMPI = $(PWD)/ompi # *_INSTALL_PREFIX are initially set to the same default, but may be overridden # individually. OMPI_INSTALL_PREFIX = $(PWD)/$(ARCH) TOOLS_INSTALL_PREFIX = $(PWD)/$(ARCH) BUILD_DIR = $(PWD)/build/$(ARCH) OMPI_BUILD_DIR = $(BUILD_DIR)/ompi TOOLS_BUILD_DIR = $(BUILD_DIR)/autotools TOOLS = $(TOOLS_INSTALL_PREFIX)/bin/autoconf \ $(TOOLS_INSTALL_PREFIX)/bin/automake \ $(TOOLS_INSTALL_PREFIX)/bin/libtool # CONFIGURE_FLAGS are appended to OMPI's ./configure (besides ignore-Fortran) CONFIGURE_FLAGS = --enable-debug --enable-trace --enable-static --disable-dlopen #CONFIGURE_FLAGS = --with-platform=optimized --enable-static --disable-dlopen CONFIGURE_FLAGS := $(CONFIGURE_FLAGS) CFLAGS=$(OMPI_CFLAGS) CXXFLAGS=$(OMPI_CFLAGS) LDFLAGS=$(OMPI_LDFLAGS) # use our own auto* tools PATH := $(DESTDIR)$(OMPI_INSTALL_PREFIX)/bin:$(TOOLS_INSTALL_PREFIX)/bin:$(PATH) ifeq ($(findstring curl, $(shell which curl)),curl) WGET = curl else WGET = wget -q --output-document=- endif # # Get required versions from distribution script # GETVERSION = $(shell grep "^$(1)_" $(OMPI)/contrib/dist/make_dist_tarball | sed -e 's/.*=//g') LT_VERSION = $(call GETVERSION,LT) AM_VERSION = $(call GETVERSION,AM) AC_VERSION = $(call GETVERSION,AC) # # main targets # all: openmpi .PHONY: test test: openmpi ulimit -u unlimited; umask 022; rake test # # Toolchain # .PHONY: tools tools: $(TOOLS_BUILD_DIR) $(TOOLS) $(TOOLS_BUILD_DIR): mkdir -p $@ # build GNU libtool $(TOOLS_INSTALL_PREFIX)/bin/libtool: $(TOOLS_BUILD_DIR)/libtool/Makefile \ $(TOOLS_INSTALL_PREFIX)/bin/automake cd $(dir $<) && umask 022 && $(MAKE) && $(MAKE) install $(TOOLS_BUILD_DIR)/libtool/Makefile: $(TOOLS_BUILD_DIR)/libtool-$(LT_VERSION)/* mkdir -p $(dir $@) cd $(dir $@) && $(dir $<)configure --prefix=$(TOOLS_INSTALL_PREFIX) # build GNU automake $(TOOLS_INSTALL_PREFIX)/bin/automake: $(TOOLS_BUILD_DIR)/automake/Makefile \ $(TOOLS_INSTALL_PREFIX)/bin/autoconf cd $(dir $<) && umask 022 && $(MAKE) && $(MAKE) install $(TOOLS_BUILD_DIR)/automake/Makefile: $(TOOLS_BUILD_DIR)/automake-$(AM_VERSION)/* mkdir -p $(dir $@) cd $(dir $@) && $(dir $<)configure --prefix=$(TOOLS_INSTALL_PREFIX) # build GNU autoconf $(TOOLS_INSTALL_PREFIX)/bin/autoconf: $(TOOLS_BUILD_DIR)/autoconf/Makefile cd $(dir $<) && umask 022 && $(MAKE) && $(MAKE) install $(TOOLS_BUILD_DIR)/autoconf/Makefile: $(TOOLS_BUILD_DIR)/autoconf-$(AC_VERSION)/* mkdir -p $(dir $@) cd $(dir $@) && $(dir $<)configure --prefix=$(TOOLS_INSTALL_PREFIX) # the download magic $(TOOLS_BUILD_DIR)/autoconf-$(AC_VERSION)/*: $(WGET) \ ftp://ftp.gnu.org/pub/gnu/autoconf/autoconf-$(AC_VERSION).tar.gz |\ (cd $(TOOLS_BUILD_DIR) && gzip -dc | tar xf -) $(TOOLS_BUILD_DIR)/automake-$(AM_VERSION)/*: $(WGET) \ ftp://ftp.gnu.org/pub/gnu/automake/automake-$(AM_VERSION).tar.gz |\ (cd $(TOOLS_BUILD_DIR) && gzip -dc | tar xf -) LT_URL=$(if $(findstring 2.1a, $(LT_VERSION)), \ http://www.open-mpi.org/svn/libtool.tar.gz, \ ftp://ftp.gnu.org/pub/gnu/libtool/libtool-$(LT_VERSION).tar.gz) $(TOOLS_BUILD_DIR)/libtool-$(LT_VERSION)/*: $(WGET) \ $(LT_URL) |\ (cd $(TOOLS_BUILD_DIR) && gzip -dc | tar xf -) # # build OpenMPI # .PHONY: openmpi compile install reinstall delete_install openmpi: install compile: $(OMPI_BUILD_DIR) install: $(DESTDIR)$(OMPI_INSTALL_PREFIX) reinstall: compile delete_install install delete_install: rm -rf $(DESTDIR)$(OMPI_INSTALL_PREFIX) $(DESTDIR)$(OMPI_INSTALL_PREFIX): $(OMPI_BUILD_DIR) umask 022 && $(MAKE) -C $(OMPI_BUILD_DIR) DESTDIR=$(DESTDIR) install chmod a+rx $(DESTDIR)$(OMPI_INSTALL_PREFIX) touch $@ # rerun make iff an source file has changed; this check is much faster than # running make on the tree OMPI_BUILD_DEPS := $(shell find $(OMPI) -name "*.[ch]") $(OMPI_BUILD_DIR): $(OMPI_BUILD_DIR)/Makefile $(OMPI_BUILD_DEPS) umask 022 && $(MAKE) -C $(OMPI_BUILD_DIR) touch $@ # rebuild the build tree iff one Makefile.in has changed OMPI_CONFIGURE_DEPS := $(shell find $(OMPI) -name Makefile.in) $(OMPI_BUILD_DIR)/Makefile: $(OMPI_CONFIGURE_DEPS) $(OMPI)/configure mkdir -p $(dir $@) cd $(dir $@) && $(OMPI)/configure --prefix=$(OMPI_INSTALL_PREFIX) \ --enable-orterun-prefix-by-default \ --disable-mpi-f77 --disable-mpi-f90 $(CONFIGURE_FLAGS) # generate configure from configure.ac $(OMPI)/configure: $(OMPI)/configure.ac $(TOOLS_BUILD_DIR) $(TOOLS) cd $(OMPI) && ./autogen.sh # prevent make from fiddling around with lex files %.c: %.l # write 100 times: I ain't mess up my lex files # # cleanup routines # .PHONY: clean clean-ompi distclean clean: clean-ompi rm -f *~ test/*~ rake clean clean-ompi: -$(MAKE) -C $(OMPI_BUILD_DIR) clean rm -f $(OMPI)/*~ clean-prefix: rm -f $(OMPI)/configure distclean: clean rm -rf $(OMPI_BUILD_DIR) $(TOOLS_BUILD_DIR) \ $(TOOLS_INSTALL_PREFIX) $(DESTDIR)$(OMPI_INSTALL_PREFIX) rake distclean