LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Мне что-то не получилось подружить -MD с вилдкардом и subst. android ndk тоже использовал sed или awk для автоподмены путей в .d файлах.

А я вот с теплотой вспоминаю старую сборочную систему проектов Android NDK на Makefile Engine. Похожая используется у libopencm3 и DevKitArm (GBA, DS). Просто. Логично. Понятно. Удобно.

Подобные системы «Makefile’ов на стероидах» позволяют гибко управлять различными аппаратными особенностями платформ. К примеру, в Android NDK было сделано так, что при наличии в имени файла ARM-постфикса source.c.arm он компилируется с -marm вместо -mthumb, аналогично Makefile Engines для GBA файлы с постфиксом source.c.iwram помещали скомпилированный код внутрь быстрой IWRAM вместо RAM, а source.c.arm7 давал возможность запуска кода на втором ARM7-сопроцессоре вместо основного камня.

С переходом Android NDK на CMake эта гибкость и логичность Makefile Engines улетучилась, а проекты начали использовать вот такие вот убогие костыли из-за ограниченности CMake перед классическими Makefile.

Стало:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/CMakeLists.txt#L1322-L1333

Было:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/Android.mk#L25-L26

Вместо того чтобы явно указывать -marm только там где это нужно, они серут -marm -mthumb и надеются на господа Бога, что поведение выбора режима процессора в компиляторах не изменится. Такой вот современный CMake макакинг.

Исправление EXL, :

Мне что-то не получилось подружить -MD с вилдкардом и subst. android ndk тоже использовал sed или awk для автоподмены путей в .d файлах.

А я вот с теплотой вспоминаю старую сборочную систему проектов Android NDK на Makefile Engine. Похожая используется у libopencm3 и DevKitArm (GBA, DS).

Подобные системы «Makefile’ов на стероидах» позволяют гибко управлять различными аппаратными особенностями платформ. К примеру, в Android NDK было сделано так, что при наличии в имени файла ARM-постфикса source.c.arm он компилируется с -marm вместо -mthumb, аналогично Makefile Engines для GBA файлы с постфиксом source.c.iwram помещали скомпилированный код внутрь быстрой IWRAM вместо RAM, а source.c.arm7 давал возможность запуска кода на втором ARM7-сопроцессоре вместо основного камня.

С переходом Android NDK на CMake эта гибкость и логичность Makefile Engines улетучилась, а проекты начали использовать вот такие вот убогие костыли из-за ограниченности CMake перед классическими Makefile.

Стало:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/CMakeLists.txt#L1322-L1333

Было:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/Android.mk#L25-L26

Вместо того чтобы явно указывать -marm только там где это нужно, они серут -marm -mthumb и надеются на господа Бога, что поведение выбора режима процессора в компиляторах не изменится. Такой вот современный CMake макакинг.

Исправление EXL, :

Мне что-то не получилось подружить -MD с вилдкардом и subst. android ndk тоже использовал sed или awk для автоподмены путей в .d файлах.

А я вот с теплотой вспоминаю старую сборочную систему проектов Android NDK на Makefile Engine. Похожая используется у libopencm3 и DevKitArm (GBA, DS).

Подобные системы «Makefile’ов на стероидах» позволяют гибко управлять различными аппаратными особенностями платформ. К примеру, в Android NDK было сделано так, что при наличии в имени файла ARM-постфикса source.c.arm он компилируется с -marm вместо -mthumb, аналогично Makefile Engines для GBA файлы с постфиксом source.c.iwram помещали скомпилированный код внутрь быстрой IWRAM вместо RAM, а source.c.arm7 давал возможность запуска кода на втором ARM7-сопроцессоре вместо основного камня.

С переходом Android NDK на CMake эта гибкость и логичность Makefile Engines улетучилась, а проекты начали использовать вот такие вот убогие костыли из-за ограниченности CMake перед классическими Makefile.

Стало:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/CMakeLists.txt#L1322-L1333

Было:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/Android.mk#L25-L26

Вместо того чтобы явно указывать -marm только там где это нужно, они серут -marm -mthumb и надеются на господа бога, что поведение выбора режима процессора в компиляторах не изменится. Такой вот современный CMake макакинг.

Исходная версия EXL, :

Мне что-то не получилось подружить -MD с вилдкардом и subst. android ndk тоже использовал sed или awk для автоподмены путей в .d файлах.

А я вот с теплотой вспоминаю старую сборочную систему проектов Android NDK на Makefile Engine. Похожая используется у libopencm3 и DevKitArm (GBA, DS).

Подобные системы «Makefile’ов на стероидах» позволяют гибко управлять различными аппаратными особенностями платформ. К примеру, в Android NDK было сделано так, что при наличии в имени файла ARM-постфикса source.c.arm он компилируется с -marm вместо -mthumb, аналогично Makefile Engines для GBA файлы с постфиксом source.c.iwram помещали скомпилированный код внутрь быстрой IWRAM вместо RAM, а source.c.arm7 давал возможность запуска кода на втором ARM7-сопроцессоре вместо основного камня.

С переходом Android NDK на CMake эта гибкость и логичность улетучилась Makefile Engines, а проекты начали использовать вот такие вот убогие костыли из-за ограниченности CMake перед классическими Makefile.

Стало:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/CMakeLists.txt#L1322-L1333

Было:

https://github.com/libsdl-org/SDL/blob/d7939abf42de34fff409f5e7c4b77ace79dff4de/Android.mk#L25-L26

Вместо того чтобы явно указывать -marm только там где это нужно, они серут -marm -mthumb и надеются на господа бога, что поведение выбора режима процессора в компиляторах не изменится. Такой вот современный CMake макакинг.