#!/usr/bin/env python # # Copyright (c) 2005-2006 The ABINIT Group (Yann Pouillon) # All rights reserved. # # This file is part of the ABINIT software package. For license information, # please see the COPYING file in the top-level directory of the ABINIT source # distribution. # from time import gmtime,strftime import commands import os import re import sys # ---------------------------------------------------------------------------- # # # Subroutines # # Makefile header def makefile_header(name,stamp): return """# # Makefile for ABINIT -*- Automake -*- # Generated by %s on %s # # IMPORTANT NOTE # # Any manual change to this file will systematically be overwritten. # Please modify the %s script or its config file instead. # ACLOCAL_AMFLAGS = -I @abinit_srcdir@/config/m4 """ % (name,stamp,name) # ---------------------------------------------------------------------------- # # # Main program # # Initial setup my_name = "make-makefiles-top" my_configs = ["config/specs/other.cf"] sep = "# ---------------------------------------------------------------------------- #\n\n" # Check if we are in the top of the ABINIT source tree if ( not os.path.exists("configure.ac") or not os.path.exists("src/main/abinit.F90") ): print "%s: You must be in the top of an ABINIT source tree." % my_name print "%s: Aborting now." % my_name sys.exit(1) # Read config file(s) for cnf in my_configs: if ( os.path.exists(cnf) ): execfile(cnf) else: print "%s: Could not find config file (%s)." % (my_name,cnf) print "%s: Aborting now." % my_name sys.exit(2) # What time is it? now = strftime("%Y/%m/%d %H:%M:%S +0000",gmtime()) clean = "CLEANFILES = abilint.out abilint.log\n\n" ext = "EXTRA_DIST =" for dir in abinit_other_dirs: ext += "\n"+commands.getoutput("find %s -type f -a ! -path '*.arch-ids*' -a ! -name '.arch-*' 2> /dev/null" % (dir)) ext = re.sub("\n"," \\\n\t",ext) ext += "\n\n" # Write Makefile.am mf = file("Makefile.am","w") mf.write(makefile_header(my_name,now)) mf.write("SUBDIRS = %s\n\n" % (abinit_top_subdirs)) mf.write(clean) mf.write(ext) add = "config/makefiles/top.am" if ( os.path.exists(add) ): mf.write(sep+file(add,"r").read()) mf.close()