The development of applications for high-performance embedded systems is typically a long and error-prone process. In addition to the required functions, developers must consider various and often conflicting non-functional application requirements such as performance and energy efficiency. The complexity of this process is exacerbated by the multitude of target architectures and the associated retargetable mapping tools. This novel framework introduces an approach that conveys domain knowledge and non-functional requirements to optimizers and mapping tools. LARA allows the specification of compilation strategies to enable efficient generation of software code and hardware cores for alternative target architectures. LARA allows writing strategies for code instrumentation and analysis, and for guiding the application of compiler and hardware synthesis optimizations.