Сортировка изменяет исходный массив. поэтому, когда вы используете сортировку последовательно, в конечном итоге вы снова и снова меняете один и тот же массив.
let arr = [1,2,3,5,6,64,76,52]
arr.sort((a,b)=> a-b)
console.log(arr)
Вы можете создать копию массива и затем отсортировать ее
let arr = [1,2,3,5,6,64,76,52]
let arr2 = [...arr].sort((a,b)=> a-b)
console.log(arr,arr2)
Переключение на систему, которая делает это для Вас (automake/autoconf), может быть более простым...
Как насчет:
CFLAGS_Linux_x86_release = -O3
CFLAGS_Linux_x86_debug = -O0 -g
CFLAGS = ${CFLAGS_${PLATFORM}_${BUILD}}
Make-файл используемый мерзавец является хорошим примером Make-файла, который делает нетривиальные задачи конфигурации в самом Make-файле (такие как включение типа хоста). Это на самом деле довольно читаемо и довольно просто использовать.
Конфигурирование таких параметров было бы задачей configure
сценарий.
Однако можно изучить синтаксис для условные выражения и условные функции . Например, Вы могли попробовать следующее:
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_release)
CFLAGS = -O3
endif
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_debug)
CFLAGS = -O0 -g
endif