mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-06-16 19:19:36 +08:00

git-svn-id: http://unity.svn.sourceforge.net/svnroot/unity/trunk@5 e7d17a6e-8845-0410-bbbc-c8efb4fdad7e
96 lines
3.3 KiB
Ruby
96 lines
3.3 KiB
Ruby
#This rakefile sets you up to use IAR System's C Compiler and Simulator for your tests.
|
|
module RakefileConstants
|
|
|
|
PROGRAM_FILES_PATH = ENV['ProgramFiles']
|
|
begin #If You installed the real thing
|
|
Dir.new PROGRAM_FILES_PATH + '\IAR Systems\Embedded Workbench 4.0\arm'
|
|
IAR_ROOT = PROGRAM_FILES_PATH + '\IAR Systems\Embedded Workbench 4.0'
|
|
rescue #Or If you installed the kick-start version
|
|
Dir.new PROGRAM_FILES_PATH + '\IAR Systems\Embedded Workbench 4.0 Kickstart\arm'
|
|
IAR_ROOT = PROGRAM_FILES_PATH + '\IAR Systems\Embedded Workbench 4.0 Kickstart'
|
|
end
|
|
|
|
C_EXTENSION = '.c'
|
|
OBJ_EXTENSION = '.r79'
|
|
BIN_EXTENSION = '.d79'
|
|
|
|
UNIT_TEST_PATH = 'test'
|
|
UNITY_PATH = '../src'
|
|
SOURCE_PATH = 'src'
|
|
BUILD_PATH = 'build'
|
|
IAR_PATH = IAR_ROOT + '\common'
|
|
IAR_BIN = IAR_PATH + '\bin'
|
|
IAR_CORE_PATH = IAR_ROOT + '\arm'
|
|
IAR_CORE_BIN = IAR_CORE_PATH + '\bin'
|
|
IAR_CORE_CONFIG = IAR_CORE_PATH + '\config'
|
|
IAR_CORE_INCLUDE = IAR_CORE_PATH + '\inc'
|
|
IAR_CORE_INCLUDE_DLIB = IAR_CORE_INCLUDE + '\lib'
|
|
IAR_CORE_LIB = IAR_CORE_PATH + '\lib'
|
|
IAR_CORE_DLIB = IAR_CORE_LIB + '\dl5tpannl8n.r79'
|
|
IAR_CORE_DLIB_CONFIG = IAR_CORE_LIB + '\dl5tpannl8n.h'
|
|
SIMULATOR_PROCESSOR = IAR_CORE_BIN + '\armproc.dll'
|
|
SIMULATOR_DRIVER = IAR_CORE_BIN + '\armsim.dll'
|
|
SIMULATOR_PLUGIN = IAR_CORE_BIN + '\armbat.dll'
|
|
SIMULATOR_BACKEND_DDF = IAR_CORE_CONFIG + '\ioat91sam9261.ddf'
|
|
PROCESSOR_TYPE = "ARM926EJ-S"
|
|
LINKER_CONFIG = IAR_CORE_CONFIG + '\lnkarm.xcl'
|
|
|
|
UNITY_SRC = UNITY_PATH + '\unity.c'
|
|
UNITY_HDR = UNITY_PATH + '\unity.h'
|
|
|
|
COMPILER = IAR_CORE_BIN + '\iccarm.exe'
|
|
LINKER = IAR_BIN + '\xlink.exe'
|
|
SIMULATOR = IAR_BIN + '\CSpyBat.exe'
|
|
|
|
end
|
|
|
|
module RakefileHelpers
|
|
include RakefileConstants
|
|
|
|
def flush_output
|
|
$stderr.flush
|
|
$stdout.flush
|
|
end
|
|
|
|
def report message
|
|
puts message
|
|
flush_output
|
|
end
|
|
|
|
def compile src, obj
|
|
execute "#{COMPILER} --dlib_config \"#{IAR_CORE_DLIB_CONFIG}\" -z3 --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --no_clustering --no_scheduling --debug --cpu_mode arm --endian little --cpu #{PROCESSOR_TYPE} --stack_align 4 -e --fpu None --diag_suppress Pa050 --diag_suppress Pe111 -I\"#{IAR_CORE_INCLUDE}\" -I\"#{UNITY_PATH}\" -Isrc -Itest #{src} -o#{obj}"
|
|
end
|
|
|
|
def link prerequisites, executable
|
|
execute "\"#{LINKER}\" -rt \"#{IAR_CORE_DLIB}\" -B -s __program_start -I\"#{IAR_CORE_CONFIG}\" -I\"#{IAR_CORE_LIB}\" -f \"#{LINKER_CONFIG}\" #{prerequisites.join(' ')} -o #{executable}"
|
|
end
|
|
|
|
def run_test executable
|
|
execute "\"#{SIMULATOR}\" --silent \"#{SIMULATOR_PROCESSOR}\" \"#{SIMULATOR_DRIVER}\" #{executable} --plugin \"#{SIMULATOR_PLUGIN}\" --backend -B --cpu #{PROCESSOR_TYPE} -p \"#{SIMULATOR_BACKEND_DDF}\" -d sim"
|
|
end
|
|
|
|
def write_result_file filename, results
|
|
if (results.include?("OK\n"))
|
|
output_file = filename.gsub(BIN_EXTENSION, '.testpass')
|
|
else
|
|
output_file = filename.gsub(BIN_EXTENSION, '.testfail')
|
|
end
|
|
File.open(output_file, 'w') do |f|
|
|
f.print results
|
|
end
|
|
end
|
|
|
|
private #####################
|
|
|
|
def execute command_string
|
|
report command_string
|
|
output = `#{command_string}`
|
|
report output
|
|
if $?.exitstatus != 0
|
|
raise "Command failed. (Returned #{$?.exitstatus})"
|
|
end
|
|
output
|
|
end
|
|
|
|
end
|