#!/usr/bin/env python from __future__ import print_function import sys, glob from util.aafabricate import run, subjob, subjobs_report, main, parallel, autoclean import setup fsources = glob.glob("slalib/*.f") # note some files are vetoed in generate_wrapper.py ccsources = glob.glob("*.cc") target = setup.lib_dir +"/libaastro.so" def write_cpp_wrapper( sources ) : # this writes ./sla.hh and ./sla.linkdef.h" run("./generate_wrapper.py "+ " ".join( sources ) ) return "sla.hh" def build(): with subjob("generating c++ wrapper for slalib "): wrapper = write_cpp_wrapper( fsources ) with subjob("make root dictionary for wrapper and other C++" ): dicts = [ setup.write_dictionary( wrapper ) ] for cc in ccsources : dicts.append( setup.write_dictionary( cc ) ) with subjob("compile the c++ " ): ccfiles = dicts + ccsources objs = [ setup.compile( f ) for f in ccfiles ] with subjob("compile the fortran"): fortobjs = [setup.compile_fortran( s ) for s in fsources ] with subjob("linking "+ target.split('/')[-1] ): setup.make_library( objs + fortobjs , target, extra_link_args="-L"+setup.lib_dir+" -laaevt" ) print ("copy pcm file to lib directory") import shutil shutil.copy( setup.build_dir + "sla.dict_rdict.pcm", setup.lib_dir+ "/sla.dict_rdict.pcm" ) shutil.copy( setup.build_dir + "Astro.dict_rdict.pcm", setup.lib_dir+ "/Astro.dict_rdict.pcm" ) subjobs_report() def clean(): autoclean() main( parallel_ok= parallel, jobs=10, dirs = setup.dependency_dirs )