#!/usr/bin/python3.6
# GNU parallel is problematic so this helper is created for compiling objects.
from multiprocessing import Pool, cpu_count
from subprocess import call
import shlex
import sys
import re
import os

src = sys.argv[1:]

def compile(cc):
    cppflags = shlex.split('' + os.getenv('CPPFLAGS', ''))
    cxxflags = shlex.split('-w -O2 -fPIC' + os.getenv('CXXFLAGS', ''))
    ldflags = shlex.split('' + os.getenv('LDFLAGS', ''))
    obj = re.sub('\.cc?$', '.o', cc)
    if os.path.exists(obj): return
    print(' '.join(['g++', *cppflags, *cxxflags, *ldflags, '-c', cc, '-o', obj]))
    call(['g++', *cppflags, *cxxflags, *ldflags, '-c', cc, '-o', obj])

with Pool(cpu_count()) as p:
    p.map(compile, src)
