39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
/* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
/*
|
|
* This hackish way of including files is due to CMake issues:
|
|
* https://gitlab.kitware.com/cmake/cmake/issues/11985
|
|
* https://gitlab.kitware.com/cmake/cmake/issues/13718
|
|
*
|
|
* When using the "Unix Makefiles" generator, CMake simply
|
|
* greps for "#include" to generate dependency list.
|
|
* So if doing it normally, both files are being included
|
|
* in the dependency list. This creates weird dependency
|
|
* issue:
|
|
*
|
|
* 1. Using A.ld to create a linker script A.cmd.
|
|
* 2. Using A.cmd to generate A_prebuilt.elf.
|
|
* 3. Using A_prebuilt.elf to create B.ld.
|
|
* 4. Creating B.cmd with B.ld.
|
|
* 5. Creating B_prebuilt.elf using B.cmd.
|
|
*
|
|
* Since the dependency list of A.cmd contains both
|
|
* A.ld and B.ld, when make is invoked again, B.ld
|
|
* is newer than A.cmd so everything from this point on
|
|
* gets rebuilt. In order to break this cycle, this
|
|
* hackish needs to be used since CMake does not parse
|
|
* macros, and thus these will not appear in
|
|
* the dependency list. The dependencies should then be
|
|
* put in CMakeLists.txt instead.
|
|
*
|
|
* Note: Ninja generator does not suffer from this issue.
|
|
*/
|
|
#ifdef LINKER_APP_SMEM_UNALIGNED
|
|
#define APP_SMEM_LD <app_smem_unaligned.ld>
|
|
#else
|
|
#define APP_SMEM_LD <app_smem_aligned.ld>
|
|
#endif
|
|
|
|
#include APP_SMEM_LD
|
|
#undef APP_SMEM_LD
|