From ac28dded3ee7ed420f755e96a2983620d33a37fb Mon Sep 17 00:00:00 2001 From: Bernard Xiong Date: Fri, 15 Feb 2019 09:04:14 +0800 Subject: [Tools] Add Makefile genernation. --- tools/makefile.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tools/makefile.py (limited to 'tools/makefile.py') diff --git a/tools/makefile.py b/tools/makefile.py new file mode 100644 index 0000000000..f6ff4a305b --- /dev/null +++ b/tools/makefile.py @@ -0,0 +1,68 @@ +import os +import sys + +from utils import * +from utils import _make_path_relative +import rtconfig + +def TargetMakefile(env): + project = ProjectInfo(env) + + make = open('config.mk', 'w') + + BSP_ROOT = os.path.abspath(env['BSP_ROOT']) + RTT_ROOT = os.path.abspath(env['RTT_ROOT']) + + make.write('BSP_ROOT ?= %s\n' % BSP_ROOT.replace('\\', '\\\\')) + make.write('RTT_ROOT ?= %s\n' % RTT_ROOT.replace('\\', '\\\\')) + make.write('\n') + + cross = os.path.abspath(rtconfig.EXEC_PATH) + cross = os.path.join(cross, rtconfig.PREFIX) + make.write('CROSS_COMPILE ?=%s' % cross.replace('\\', '\\\\')) + make.write('\n') + make.write('\n') + + make.write('CFLAGS :=%s' % (rtconfig.CFLAGS)) + make.write('\n') + make.write('AFLAGS :=%s' % (rtconfig.AFLAGS)) + make.write('\n') + make.write('LFLAGS :=%s' % (rtconfig.LFLAGS)) + make.write('\n') + if 'CXXFLAGS' in dir(rtconfig): + make.write('CXXFLAGS :=%s' % (rtconfig.CXXFLAGS)) + make.write('\n') + + make.write('\n') + + Files = project['FILES'] + Headers = project['HEADERS'] + CPPDEFINES = project['CPPDEFINES'] + + path = '' + paths = [_make_path_relative(BSP_ROOT, os.path.normpath(i)) for i in project['CPPPATH']] + for item in paths: + path += '\t-I%s \\\n' % item + + make.write('CPPPATHS :=') + if path[0] == '\t': path = path[1:] + length = len(path) + if path[length - 2] == '\\': path = path[:length - 2] + make.write(path) + make.write('\n') + make.write('\n') + + defines = '' + for item in project['CPPDEFINES']: + defines += ' -D%s' % item + make.write('DEFINES :=') + make.write(defines) + make.write('\n') + + src = open('src.mk', 'w') + files = [_make_path_relative(BSP_ROOT, os.path.normpath(i)) for i in Files] + src.write('SRC_FILES :=\n') + for item in files: + src.write('SRC_FILES +=%s\n' % item) + + return -- cgit v1.3.1 From da73aa1a09bf13b93eb79dc0aabe9ee3e946a648 Mon Sep 17 00:00:00 2001 From: BernardXiong Date: Thu, 21 Mar 2019 12:13:00 +0000 Subject: [Tools] Add RTT_ROOT/BSP_ROOT for CPPPATH and source files --- tools/makefile.py | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) (limited to 'tools/makefile.py') diff --git a/tools/makefile.py b/tools/makefile.py index f6ff4a305b..9292233601 100644 --- a/tools/makefile.py +++ b/tools/makefile.py @@ -8,11 +8,15 @@ import rtconfig def TargetMakefile(env): project = ProjectInfo(env) - make = open('config.mk', 'w') - BSP_ROOT = os.path.abspath(env['BSP_ROOT']) RTT_ROOT = os.path.abspath(env['RTT_ROOT']) + match_bsp = False + if BSP_ROOT.startswith(RTT_ROOT): + match_bsp = True + + make = open('config.mk', 'w') + make.write('BSP_ROOT ?= %s\n' % BSP_ROOT.replace('\\', '\\\\')) make.write('RTT_ROOT ?= %s\n' % RTT_ROOT.replace('\\', '\\\\')) make.write('\n') @@ -39,8 +43,25 @@ def TargetMakefile(env): Headers = project['HEADERS'] CPPDEFINES = project['CPPDEFINES'] + paths = [os.path.normpath(i) for i in project['CPPPATH']] + CPPPATH = [] + for path in paths: + fn = os.path.normpath(path) + if match_bsp: + if fn.startswith(BSP_ROOT): + fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '') + elif fn.startswith(RTT_ROOT): + fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '') + else: + if fn.startswith(RTT_ROOT): + fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '') + elif fn.startswith(BSP_ROOT): + fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '') + + CPPPATH.append(fn) + path = '' - paths = [_make_path_relative(BSP_ROOT, os.path.normpath(i)) for i in project['CPPPATH']] + paths = CPPPATH for item in paths: path += '\t-I%s \\\n' % item @@ -59,8 +80,26 @@ def TargetMakefile(env): make.write(defines) make.write('\n') + files = Files + Files = [] + for file in files: + fn = os.path.normpath(file) + if match_bsp: + if fn.startswith(BSP_ROOT): + fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '') + elif fn.startswith(RTT_ROOT): + fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '') + else: + if fn.startswith(RTT_ROOT): + fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '') + elif fn.startswith(BSP_ROOT): + fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '') + + Files.append(fn) + # print(fn) + src = open('src.mk', 'w') - files = [_make_path_relative(BSP_ROOT, os.path.normpath(i)) for i in Files] + files = Files src.write('SRC_FILES :=\n') for item in files: src.write('SRC_FILES +=%s\n' % item) -- cgit v1.3.1