История изменений
Исправление
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/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/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/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/Android.mk#L25-L26
Вместо того чтобы явно указывать -marm только там где это нужно, они серут -marm -mthumb и надеются на господа бога, что поведение выбора режима процессора в компиляторах не изменится. Такой вот современный CMake макакинг.