Files
se-algo/algo.py
2025-08-31 22:54:06 +08:00

38 lines
1.1 KiB
Python
Executable File

import os
from SCons.Script import *
# 工具链配置(Ubuntu gcc环境)
CROSS_TOOL = 'gcc'
PREFIX = '' # 本地编译不需要交叉编译前缀
# 目标配置
TARGET_NAME = 'app' # 更改为通用应用名称
BUILD_DIR = 'build' # 统一构建输出目录
# 工具链路径(使用系统默认的gcc工具链)
CC = PREFIX + 'gcc'
CXX = PREFIX + 'g++'
AS = PREFIX + 'gcc'
AR = PREFIX + 'ar'
LINK = PREFIX + 'gcc'
SIZE = PREFIX + 'size'
OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy'
# 编译、链接选项(适用于Ubuntu gcc环境)
DEVICE = '-std=c99 -g -O2 -fvisibility=hidden -fno-common'
CFLAGS = DEVICE + ' -Wall -Wextra' # 添加更多警告选项
AFLAGS = '-c ' + DEVICE + ' -x assembler-with-cpp'
LFLAGS = DEVICE + ' -Wl,--gc-sections,-cref,-Map=' + os.path.join(BUILD_DIR, TARGET_NAME + '.map')
# 构建后处理命令(输出到 build 目录)
ASM_FILE = os.path.join(BUILD_DIR, TARGET_NAME + '.asm')
BIN_FILE = os.path.join(BUILD_DIR, TARGET_NAME + '.bin')
DUMP_ACTION = f'{OBJDUMP} -D -S $SOURCE > {ASM_FILE}'
POST_ACTION = f'{OBJCPY} -O binary $SOURCE {BIN_FILE}\n'
POST_ACTION += f'{SIZE} $SOURCE\n'
POST_ACTION += DUMP_ACTION