rules_release.rake 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. RELEASE_COMPILE_TASK_ROOT = RELEASE_TASK_ROOT + 'compile:'
  2. RELEASE_ASSEMBLE_TASK_ROOT = RELEASE_TASK_ROOT + 'assemble:'
  3. if (RELEASE_BUILD_USE_ASSEMBLY)
  4. rule(/#{PROJECT_RELEASE_BUILD_OUTPUT_ASM_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
  5. proc do |task_name|
  6. @ceedling[:file_finder].find_assembly_file(task_name)
  7. end
  8. ]) do |object|
  9. @ceedling[:generator].generate_object_file(
  10. TOOLS_RELEASE_ASSEMBLER,
  11. RELEASE_SYM,
  12. object.source,
  13. object.name )
  14. end
  15. end
  16. rule(/#{PROJECT_RELEASE_BUILD_OUTPUT_C_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
  17. proc do |task_name|
  18. @ceedling[:file_finder].find_compilation_input_file(task_name)
  19. end
  20. ]) do |object|
  21. @ceedling[:generator].generate_object_file(
  22. TOOLS_RELEASE_COMPILER,
  23. RELEASE_SYM,
  24. object.source,
  25. object.name,
  26. @ceedling[:file_path_utils].form_release_build_c_list_filepath( object.name ) )
  27. end
  28. rule(/#{PROJECT_RELEASE_BUILD_TARGET}/) do |bin_file|
  29. map_file = @ceedling[:configurator].project_release_build_map
  30. @ceedling[:generator].generate_executable_file(
  31. TOOLS_RELEASE_LINKER,
  32. RELEASE_SYM,
  33. bin_file.prerequisites,
  34. bin_file.name,
  35. map_file )
  36. @ceedling[:release_invoker].artifactinate( bin_file.name, map_file, @ceedling[:configurator].release_build_artifacts )
  37. end
  38. namespace RELEASE_SYM do
  39. # use rules to increase efficiency for large projects (instead of iterating through all sources and creating defined tasks)
  40. namespace :compile do
  41. rule(/^#{RELEASE_COMPILE_TASK_ROOT}\S+#{'\\'+EXTENSION_SOURCE}$/ => [ # compile task names by regex
  42. proc do |task_name|
  43. source = task_name.sub(/#{RELEASE_COMPILE_TASK_ROOT}/, '')
  44. @ceedling[:file_finder].find_source_file(source, :error)
  45. end
  46. ]) do |compile|
  47. @ceedling[:rake_wrapper][:directories].invoke
  48. @ceedling[:project_config_manager].process_release_config_change
  49. @ceedling[:release_invoker].setup_and_invoke_c_objects( [compile.source] )
  50. end
  51. end
  52. if (RELEASE_BUILD_USE_ASSEMBLY)
  53. namespace :assemble do
  54. rule(/^#{RELEASE_ASSEMBLE_TASK_ROOT}\S+#{'\\'+EXTENSION_ASSEMBLY}$/ => [ # assemble task names by regex
  55. proc do |task_name|
  56. source = task_name.sub(/#{RELEASE_ASSEMBLE_TASK_ROOT}/, '')
  57. @ceedling[:file_finder].find_assembly_file(source)
  58. end
  59. ]) do |assemble|
  60. @ceedling[:rake_wrapper][:directories].invoke
  61. @ceedling[:project_config_manager].process_release_config_change
  62. @ceedling[:release_invoker].setup_and_invoke_asm_objects( [assemble.source] )
  63. end
  64. end
  65. end
  66. end