abinit/config/scripts/make-macros-autotools

161 lines
3.5 KiB
Python
Executable File

#!/usr/bin/env python
#
# Copyright (C) 2009-2025 ABINIT Group (Yann Pouillon)
#
# 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 __future__ import print_function, division, absolute_import
from time import gmtime,strftime
try:
from commands import getoutput
except:
from subprocess import getoutput
import os
import re
import sys
# ---------------------------------------------------------------------------- #
#
# Subroutines
#
# Macro header
def macro_header(name,stamp):
return """# Generated by %s on %s
#
# ABINIT Autotools info dumper for the "configure" script
#
#
# IMPORTANT NOTE
#
# This file has been automatically generated by the %s
# script. If you try to edit it, your changes will systematically be
# overwritten.
#
""" % (name,stamp,name)
# Autotools info macro
def macro_info(m4_version,ac_version,am_version,lt_version):
return """
# ABI_INFO_AUTOTOOLS()
# --------------------
#
# Make information about the Autotools available.
#
AC_DEFUN([ABI_INFO_AUTOTOOLS],[
dnl Store version numbers
abi_m4_version="%6.6d"
abi_ac_version="%6.6d"
abi_am_version="%6.6d"
abi_lt_version="%6.6d"
dnl Display version information
AC_MSG_NOTICE([reporting Autotools information:])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([ * M4 : ${abi_m4_version}])
AC_MSG_NOTICE([ * Autoconf : ${abi_ac_version}])
AC_MSG_NOTICE([ * Automake : ${abi_am_version}])
AC_MSG_NOTICE([ * Libtool : ${abi_lt_version}])
dnl Substitute variables
AC_SUBST(abi_m4_version)
AC_SUBST(abi_ac_version)
AC_SUBST(abi_am_version)
AC_SUBST(abi_lt_version)
]) # ABI_INFO_AUTOTOOLS
""" % (m4_version,ac_version,am_version,lt_version)
# Init macro for source and build dirs
def macro_init_dirs(ac_version):
ret = """
# ABI_INIT_DIRS()
# ---------------
#
# Set paths to source and build directories.
#
AC_DEFUN([ABI_INIT_DIRS],[
dnl Set paths (needed by other ABINIT macros)
_AC_SRCDIRS(["."])
abinit_srcdir="${ac_abs_top_srcdir}"
abinit_builddir="${ac_abs_top_builddir}"
export abinit_srcdir abinit_builddir
AC_SUBST(abinit_srcdir)
AC_SUBST(abinit_builddir)
]) # ABI_INIT_DIRS
"""
return ret
# ---------------------------------------------------------------------------- #
#
# Main program
#
# Initial setup
my_name = "make-macros-autotools"
my_output = "config/m4/auto-autotools.m4"
# 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/98_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)
# What time is it?
now = strftime("%Y/%m/%d %H:%M:%S +0000",gmtime())
# Get Autotools versions
at_file = "./config/local/autotools.sh"
if ( os.path.exists(at_file) ):
at_versions = open(at_file, "rt").read()
exec(at_versions)
m4_version = int(abi_m4_version)
ac_version = int(abi_ac_version)
am_version = int(abi_am_version)
lt_version = int(abi_lt_version)
else:
m4_version = 0
ac_version = 0
am_version = 0
lt_version = 0
sys.stderr.write(
"[%s] WARNING: could not get Autotools version information" % \
(my_name))
# Write macros
m4 = open(my_output,"wt")
m4.write(macro_header(my_name,now))
m4.write(macro_info(m4_version,ac_version,am_version,lt_version))
m4.write(macro_init_dirs(ac_version))
m4.close()
tmp = getoutput("./config/scripts/add-header-typed Autoconf %s" % (my_output))
if ( tmp != "" ):
print(tmp)