| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | from __future__ import print_function |
| | import sys |
| | import shutil as sh |
| | import os |
| | import glob |
| | import re |
| |
|
| | test_template = """ |
| | TEST_SRC := %(TEST_SRC)s |
| | TEST_NAME := %(TEST_NAME)s |
| | include $(ROOTDIR)/thrust/internal/build/generic_test.mk |
| | """ |
| | example_template = """ |
| | EXAMPLE_SRC := %(EXAMPLE_SRC)s |
| | EXAMPLE_NAME := %(EXAMPLE_NAME)s |
| | include $(ROOTDIR)/thrust/internal/build/generic_example.mk |
| | """ |
| |
|
| | def Glob(pattern, directory,exclude='\B'): |
| | src = glob.glob(os.path.join(directory,pattern)) |
| | p = re.compile(exclude) |
| | src = [s for s in src if not p.match(s)] |
| | return src |
| |
|
| |
|
| | def generate_test_mk(mk_path, test_path, group, TEST_DIR): |
| | print('Generating makefiles in "'+mk_path+'" for tests in "'+test_path+'"') |
| | src_cu = Glob("*.cu", test_path, ".*testframework.cu$") |
| | src_cxx = Glob("*.cpp", test_path) |
| | src_cu.sort(); |
| | src_cxx.sort(); |
| | src_all = src_cu + src_cxx; |
| | tests_all = [] |
| | dependencies_all = [] |
| | for s in src_all: |
| | fn = os.path.splitext(os.path.basename(s)); |
| | t = "thrust."+group+"."+fn[0] |
| | e = fn[1] |
| | mkfile = test_template % {"TEST_SRC" : s, "TEST_NAME" : t} |
| | f = open(os.path.join(mk_path,t+".mk"), 'w') |
| | f.write(mkfile) |
| | f.close() |
| | tests_all.append(os.path.join(mk_path,t)) |
| | dependencies_all.append(t+": testframework") |
| | return [tests_all, dependencies_all] |
| |
|
| | def generate_example_mk(mk_path, example_path, group, EXAMPLE_DIR): |
| | print('Generating makefiles in "'+mk_path+'" for examples in "'+example_path+'"') |
| | src_cu = Glob("*.cu", example_path) |
| | src_cxx = Glob("*.cpp", example_path) |
| | src_cu.sort(); |
| | src_cxx.sort(); |
| | src_all = src_cu + src_cxx; |
| | examples_all = [] |
| | for s in src_all: |
| | fn = os.path.splitext(os.path.basename(s)); |
| | t = "thrust."+group+"."+fn[0] |
| | e = fn[1] |
| | mkfile = example_template % {"EXAMPLE_SRC" : s, "EXAMPLE_NAME" : t} |
| | f = open(os.path.join(mk_path,t+".mk"), 'w') |
| | f.write(mkfile) |
| | f.close() |
| | examples_all.append(os.path.join(mk_path,t)) |
| | return examples_all |
| |
|
| |
|
| | |
| | def relpath(path, start): |
| | """Return a relative version of a path""" |
| |
|
| | import posixpath |
| | if not path: |
| | raise ValueError("no path specified") |
| | start_list = posixpath.abspath(start).split(posixpath.sep) |
| | path_list = posixpath.abspath(path).split(posixpath.sep) |
| | |
| | i = len(posixpath.commonprefix([start_list, path_list])) |
| | rel_list = [posixpath.pardir] * (len(start_list)-i) + path_list[i:] |
| | if not rel_list: |
| | return posixpath.curdir |
| | return posixpath.join(*rel_list) |
| |
|
| | mk_path=sys.argv[1] |
| | REL_DIR="../../" |
| | if (len(sys.argv) > 2): |
| | root_path=sys.argv[2]; |
| | mk_path = relpath(mk_path, root_path) |
| | REL_DIR = relpath(root_path,mk_path) |
| |
|
| | try: |
| | sh.rmtree(mk_path) |
| | except: |
| | pass |
| | os.makedirs(mk_path) |
| |
|
| | tests_all, dependencies_all = generate_test_mk(mk_path, "testing/", "test", REL_DIR) |
| | tests_cu, dependencies_cu = generate_test_mk(mk_path, "testing/cuda/", "test.cuda", REL_DIR) |
| | tests_all.extend(tests_cu) |
| | dependencies_all.extend(dependencies_cu) |
| |
|
| | testing_mk = "" |
| |
|
| | for t in tests_all: |
| | testing_mk += "PROJECTS += "+t+"\n" |
| | testing_mk += "PROJECTS += internal/build/testframework\n" |
| |
|
| |
|
| | f = open(os.path.join(mk_path,"testing.mk"),'w') |
| | f.write(testing_mk) |
| | f.close() |
| |
|
| | dependencies_mk = "" |
| | for d in dependencies_all: |
| | dependencies_mk += d + "\n" |
| |
|
| | f = open(os.path.join(mk_path,"dependencies.mk"),'w') |
| | f.write(dependencies_mk) |
| | f.close() |
| |
|
| |
|
| | examples_mk = "" |
| | examples_all = generate_example_mk(mk_path, "examples/", "example", REL_DIR) |
| | examples_cuda = generate_example_mk(mk_path, "examples/cuda/", "example.cuda", REL_DIR) |
| | examples_all.extend(examples_cuda) |
| | for e in examples_all: |
| | examples_mk += "PROJECTS += "+e+"\n" |
| |
|
| | f = open(os.path.join(mk_path,"examples.mk"),'w') |
| | f.write(examples_mk) |
| | f.close() |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|