2017-04-05 01:09:31 +02:00
|
|
|
from __future__ import absolute_import
|
|
|
|
from __future__ import division
|
|
|
|
from __future__ import print_function
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import targets_cfg
|
|
|
|
|
2017-11-15 23:13:39 +01:00
|
|
|
def pretty_list(lst, indent=8):
|
2017-04-05 01:09:31 +02:00
|
|
|
if lst is None or len(lst) == 0:
|
|
|
|
return ""
|
|
|
|
|
|
|
|
if len(lst) == 1:
|
|
|
|
return "\"%s\"" % lst[0]
|
2017-11-15 23:13:39 +01:00
|
|
|
|
2017-04-05 01:09:31 +02:00
|
|
|
separator = "\",\n%s\"" % (" " * indent)
|
2017-11-15 23:13:39 +01:00
|
|
|
res = separator.join(sorted(lst))
|
|
|
|
res = "\n" + (" " * indent) + "\"" + res + "\",\n" + (" " * (indent - 4))
|
2017-04-05 01:09:31 +02:00
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
|
|
class TARGETSBuilder:
|
|
|
|
def __init__(self, path):
|
|
|
|
self.path = path
|
|
|
|
self.targets_file = open(path, 'w')
|
|
|
|
self.targets_file.write(targets_cfg.rocksdb_target_header)
|
|
|
|
self.total_lib = 0
|
|
|
|
self.total_bin = 0
|
|
|
|
self.total_test = 0
|
2017-11-15 23:13:39 +01:00
|
|
|
self.tests_cfg = ""
|
2017-04-05 01:09:31 +02:00
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
self.targets_file.close()
|
|
|
|
|
|
|
|
def add_library(self, name, srcs, deps=None, headers=None):
|
|
|
|
if headers is None:
|
|
|
|
headers = "AutoHeaders.RECURSIVE_GLOB"
|
|
|
|
self.targets_file.write(targets_cfg.library_template % (
|
|
|
|
name,
|
|
|
|
pretty_list(srcs),
|
2017-11-15 23:13:39 +01:00
|
|
|
headers,
|
2017-04-05 01:09:31 +02:00
|
|
|
pretty_list(deps)))
|
|
|
|
self.total_lib = self.total_lib + 1
|
|
|
|
|
|
|
|
def add_binary(self, name, srcs, deps=None):
|
|
|
|
self.targets_file.write(targets_cfg.binary_template % (
|
|
|
|
name,
|
|
|
|
pretty_list(srcs),
|
|
|
|
pretty_list(deps)))
|
|
|
|
self.total_bin = self.total_bin + 1
|
|
|
|
|
|
|
|
def register_test(self, test_name, src, is_parallel):
|
|
|
|
exec_mode = "serial"
|
|
|
|
if is_parallel:
|
|
|
|
exec_mode = "parallel"
|
2017-11-15 23:13:39 +01:00
|
|
|
self.tests_cfg += targets_cfg.test_cfg_template % (
|
|
|
|
test_name,
|
|
|
|
str(src),
|
|
|
|
str(exec_mode))
|
2017-04-05 01:09:31 +02:00
|
|
|
|
|
|
|
self.total_test = self.total_test + 1
|
|
|
|
|
|
|
|
def flush_tests(self):
|
2017-11-15 23:13:39 +01:00
|
|
|
self.targets_file.write(targets_cfg.unittests_template % self.tests_cfg)
|
|
|
|
self.tests_cfg = ""
|