Как сделать условный оператор в makefile

Я пытаюсь использовать переменную командной строки, чтобы выбрать набор инструментов, который мы используем для компиляции. В командной строке я использую строку типа:

make all-arm OUR_TOOLKIT=1

И в каждом подразумеваемом make-файле я добавляю это include

include ARM_Compiler.inc

Затем в каждом make-файле

all: setToolkit $(otherOperations)

А содержимое ARM _Compiler — это логика выбора компилятора:

setToolkit: 
ifdef OUR_TOOLKIT
    TOOLKIT=1
endif
ifdef CUSTOMER_TOOLKIT
    TOOLKIT=2
endif

ifeq ($(TOOLKIT), 1)
    $(info "=========Our toolkit selected======================")
    rm=/bin/rm -f
    CC= arm-linux-c++ -fPIC
    CXX= arm-linux-c++ -fPIC
    LINK= arm-linux-c++ -shared -Wl
    AR= ar cq
    RANLIB= ranlib
    STRIP=arm-linux-strip 

    # para que se utilicen las herramientas y librerias del cross compiler
    PATH:=$(PATH):/path/to/our/toolkit
    LD_LIBRAY_PATH:=$(LD_LIBRAY_PATH):/path/to/our/toolkit          
endif

ifeq ($(TOOLKIT), 2)
    $(info "================Customer toolkit selected====================")
    rm=/bin/rm -f
    CC= arm-none-linux-gnueabi-c++ -fPIC
    CXX= arm-none-linux-gnueabi-c++ -fPIC
    LINK= arm-none-linux-gnueabi-c++ -shared -Wl
    AR= ar cq
    RANLIB= ranlib
    STRIP= arm-none-linux-gnueabi-strip 

    # para que se utilicen las herramientas y librerias del cross compiler
    PATH:=$(PATH):/path/to/other/toolkit
    LD_LIBRAY_PATH:=$(LD_LIBRAY_PATH):/path/to/other/toolkit
endif

Благодаря помощи 0A0D я обнаружил, что значение TOOLKIT всегда пустое. Я немного изменил код.Теперь проблема в том, что make выдает ошибку

../makefile-includes/ARM-compiler.inc:10: *** commands commence before first target

в этой строке:

ifeq ($(TOOLKIT), 1)

У кого-нибудь есть идея? Спасибо

5
задан Lyle 11 June 2019 в 18:54
поделиться