Почему процесс GNU make зависает?

TL;DR:

При новой установке Windows 10 я установил средства разработки ARM DS-5 v5.26.2. Я использую его make.exe для сборки нашего проекта либо из командной строки Cygwin, либо из настроек сборки Eclipse IDE.

Наш Makefile содержит строку:

uname_result := $(shell uname -s)

но всякий раз, когда make достигает этой строки, он застревает. Это происходит на терминале bash, а также в командной строке Windows.

ОБНОВЛЕНИЕ 3:

После дальнейшего устранения неполадок выяснилось, что проблема заключалась в самой утилите DS-5 make. Я добавил make в свою установку Cygwin и использовал ее, и теперь мои сборки работают нормально.

Теперь вопрос в том, почему версия ARM не работает на моей машине с Win 10, где она отлично работала на Win 7.


Полная версия:

Я только что выполнил чистую установку Windows 10 на своем рабочем ПК после двух лет использования Windows 7 на этом ПК. В последние два дня я переустанавливаю наши инструменты и возвращаюсь в форму. К сожалению, теперь я застрял с make, вызывающим у меня головную боль.

Мы разрабатываем встроенное ПО с использованием набора инструментов ARM DS-5. Проект представляет собой проект Makefile, поэтому мы не используем встроенный конструктор Eclipse. Чтобы построить проект вне среды Eclipse, я установил Cygwin для удобного bash интерфейса командной строки. И make, и clang являются частью установки DS-5.

Когда я запускаю make в CLI формы проекта Makefile, выполнение останавливается на неопределенный срок.

[...удаление длинной истории после процесса выявления проблемы...]

Отследив источник проблемы, я обнаружил, что проблема связана с этой строкой:

uname_result := $(shell uname -s 2>NUL)

Чтобы упростить его, я убедился, что проблема в самой команде shell. Я сделал очень простой Makefile со следующей командой, которая также зависает:

uname_result := $(shell ls)

При обработке make-файла с make -d, когда он доходит до этой строки, я получаю следующее:

CreateProcess(C:\cygwin64\bin\ls.exe,ls,...)
Main thread handle = 000000000000009C

Почему make не может выполнить команду shell? Этот точно такой же скрипт работал нормально до миграции.

ОБНОВЛЕНИЕ 1 с дополнительной информацией:

В моей системе есть только один make.exe, расположенный в C:\DS-5_v5.26.2\bin.

Я создал упрощенный make-файл Makefile.tmp:

.PHONY: help
help:
    echo ====================== TESTING ======================
    uname_result := $(shell ls)

Я обрабатываю этот make-файл из CLI Cygwin bash:

$ /cygdrive/c/DS-5_v5.26.2/bin/make -d -f Makefile.tmp help

и я получаю тонны диагностики взамен:

GNU Make 4.1
Built for Windows32
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
find_and_set_shell() path search set default_shell = C:/cygwin64/bin/sh.exe
Reading makefiles...
Reading makefile 'Makefile.tmp'...
Updating makefiles....
 Considering target file 'Makefile.tmp'.
  Looking for an implicit rule for 'Makefile.tmp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.o'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.c'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.cc'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.C'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.cpp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.p'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.f'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.F'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.m'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.r'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.s'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.S'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.mod'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.sh'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp,v'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'RCS/Makefile.tmp,v'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'RCS/Makefile.tmp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 's.Makefile.tmp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'SCCS/s.Makefile.tmp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.o'.
  Looking for a rule with intermediate file 'Makefile.tmp.o'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.c'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.cc'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.C'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.cpp'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.p'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.f'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.F'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.m'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.r'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.s'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.S'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.mod'.
   Trying pattern rule with stem 'Makefile.tmp.o'.
   Trying implicit prerequisite 'Makefile.tmp.o,v'.
   Trying pattern rule with stem 'Makefile.tmp.o'.
   Trying implicit prerequisite 'RCS/Makefile.tmp.o,v'.
   Trying pattern rule with stem 'Makefile.tmp.o'.
   Trying implicit prerequisite 'RCS/Makefile.tmp.o'.
   Trying pattern rule with stem 'Makefile.tmp.o'.
   Trying implicit prerequisite 's.Makefile.tmp.o'.
   Trying pattern rule with stem 'Makefile.tmp.o'.
   Trying implicit prerequisite 'SCCS/s.Makefile.tmp.o'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.c'.
   Looking for a rule with intermediate file 'Makefile.tmp.c'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.y'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.l'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.w'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.w'.
    Trying pattern rule with stem 'Makefile.tmp.c'.
    Trying implicit prerequisite 'Makefile.tmp.c,v'.
    Trying pattern rule with stem 'Makefile.tmp.c'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.c,v'.
    Trying pattern rule with stem 'Makefile.tmp.c'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.c'.
    Trying pattern rule with stem 'Makefile.tmp.c'.
    Trying implicit prerequisite 's.Makefile.tmp.c'.
    Trying pattern rule with stem 'Makefile.tmp.c'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.c'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.y'.
    Looking for a rule with intermediate file 'Makefile.tmp.y'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.y'.
     Trying implicit prerequisite 'Makefile.tmp.y,v'.
     Trying pattern rule with stem 'Makefile.tmp.y'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.y,v'.
     Trying pattern rule with stem 'Makefile.tmp.y'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.y'.
     Trying pattern rule with stem 'Makefile.tmp.y'.
     Trying implicit prerequisite 's.Makefile.tmp.y'.
     Trying pattern rule with stem 'Makefile.tmp.y'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.y'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.l'.
    Looking for a rule with intermediate file 'Makefile.tmp.l'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.l'.
     Trying implicit prerequisite 'Makefile.tmp.l,v'.
     Trying pattern rule with stem 'Makefile.tmp.l'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.l,v'.
     Trying pattern rule with stem 'Makefile.tmp.l'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.l'.
     Trying pattern rule with stem 'Makefile.tmp.l'.
     Trying implicit prerequisite 's.Makefile.tmp.l'.
     Trying pattern rule with stem 'Makefile.tmp.l'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.l'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.w'.
    Looking for a rule with intermediate file 'Makefile.tmp.w'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.w'.
     Trying implicit prerequisite 'Makefile.tmp.w,v'.
     Trying pattern rule with stem 'Makefile.tmp.w'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.w,v'.
     Trying pattern rule with stem 'Makefile.tmp.w'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.w'.
     Trying pattern rule with stem 'Makefile.tmp.w'.
     Trying implicit prerequisite 's.Makefile.tmp.w'.
     Trying pattern rule with stem 'Makefile.tmp.w'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.w'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Rejecting impossible implicit prerequisite 'Makefile.tmp.w'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.cc'.
   Looking for a rule with intermediate file 'Makefile.tmp.cc'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp.cc'.
    Trying implicit prerequisite 'Makefile.tmp.cc,v'.
    Trying pattern rule with stem 'Makefile.tmp.cc'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.cc,v'.
    Trying pattern rule with stem 'Makefile.tmp.cc'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.cc'.
    Trying pattern rule with stem 'Makefile.tmp.cc'.
    Trying implicit prerequisite 's.Makefile.tmp.cc'.
    Trying pattern rule with stem 'Makefile.tmp.cc'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.cc'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.C'.
   Looking for a rule with intermediate file 'Makefile.tmp.C'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp.C'.
    Trying implicit prerequisite 'Makefile.tmp.C,v'.
    Trying pattern rule with stem 'Makefile.tmp.C'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.C,v'.
    Trying pattern rule with stem 'Makefile.tmp.C'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.C'.
    Trying pattern rule with stem 'Makefile.tmp.C'.
    Trying implicit prerequisite 's.Makefile.tmp.C'.
    Trying pattern rule with stem 'Makefile.tmp.C'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.C'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.cpp'.
   Looking for a rule with intermediate file 'Makefile.tmp.cpp'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp.cpp'.
    Trying implicit prerequisite 'Makefile.tmp.cpp,v'.
    Trying pattern rule with stem 'Makefile.tmp.cpp'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.cpp,v'.
    Trying pattern rule with stem 'Makefile.tmp.cpp'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.cpp'.
    Trying pattern rule with stem 'Makefile.tmp.cpp'.
    Trying implicit prerequisite 's.Makefile.tmp.cpp'.
    Trying pattern rule with stem 'Makefile.tmp.cpp'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.cpp'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.p'.
   Looking for a rule with intermediate file 'Makefile.tmp.p'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.web'.
    Trying pattern rule with stem 'Makefile.tmp.p'.
    Trying implicit prerequisite 'Makefile.tmp.p,v'.
    Trying pattern rule with stem 'Makefile.tmp.p'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.p,v'.
    Trying pattern rule with stem 'Makefile.tmp.p'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.p'.
    Trying pattern rule with stem 'Makefile.tmp.p'.
    Trying implicit prerequisite 's.Makefile.tmp.p'.
    Trying pattern rule with stem 'Makefile.tmp.p'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.p'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.web'.
    Looking for a rule with intermediate file 'Makefile.tmp.web'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.web'.
     Trying implicit prerequisite 'Makefile.tmp.web,v'.
     Trying pattern rule with stem 'Makefile.tmp.web'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.web,v'.
     Trying pattern rule with stem 'Makefile.tmp.web'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.web'.
     Trying pattern rule with stem 'Makefile.tmp.web'.
     Trying implicit prerequisite 's.Makefile.tmp.web'.
     Trying pattern rule with stem 'Makefile.tmp.web'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.web'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.f'.
   Looking for a rule with intermediate file 'Makefile.tmp.f'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.F'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.r'.
    Trying pattern rule with stem 'Makefile.tmp.f'.
    Trying implicit prerequisite 'Makefile.tmp.f,v'.
    Trying pattern rule with stem 'Makefile.tmp.f'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.f,v'.
    Trying pattern rule with stem 'Makefile.tmp.f'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.f'.
    Trying pattern rule with stem 'Makefile.tmp.f'.
    Trying implicit prerequisite 's.Makefile.tmp.f'.
    Trying pattern rule with stem 'Makefile.tmp.f'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.f'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.F'.
    Looking for a rule with intermediate file 'Makefile.tmp.F'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.F'.
     Trying implicit prerequisite 'Makefile.tmp.F,v'.
     Trying pattern rule with stem 'Makefile.tmp.F'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.F,v'.
     Trying pattern rule with stem 'Makefile.tmp.F'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.F'.
     Trying pattern rule with stem 'Makefile.tmp.F'.
     Trying implicit prerequisite 's.Makefile.tmp.F'.
     Trying pattern rule with stem 'Makefile.tmp.F'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.F'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.r'.
    Looking for a rule with intermediate file 'Makefile.tmp.r'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp'.
     Rejecting impossible implicit prerequisite 'Makefile.tmp.l'.
     Trying pattern rule with stem 'Makefile.tmp.r'.
     Trying implicit prerequisite 'Makefile.tmp.r,v'.
     Trying pattern rule with stem 'Makefile.tmp.r'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.r,v'.
     Trying pattern rule with stem 'Makefile.tmp.r'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.r'.
     Trying pattern rule with stem 'Makefile.tmp.r'.
     Trying implicit prerequisite 's.Makefile.tmp.r'.
     Trying pattern rule with stem 'Makefile.tmp.r'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.r'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Rejecting impossible implicit prerequisite 'Makefile.tmp.F'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.m'.
   Looking for a rule with intermediate file 'Makefile.tmp.m'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.ym'.
    Trying pattern rule with stem 'Makefile.tmp.m'.
    Trying implicit prerequisite 'Makefile.tmp.m,v'.
    Trying pattern rule with stem 'Makefile.tmp.m'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.m,v'.
    Trying pattern rule with stem 'Makefile.tmp.m'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.m'.
    Trying pattern rule with stem 'Makefile.tmp.m'.
    Trying implicit prerequisite 's.Makefile.tmp.m'.
    Trying pattern rule with stem 'Makefile.tmp.m'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.m'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.ym'.
    Looking for a rule with intermediate file 'Makefile.tmp.ym'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.ym'.
     Trying implicit prerequisite 'Makefile.tmp.ym,v'.
     Trying pattern rule with stem 'Makefile.tmp.ym'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.ym,v'.
     Trying pattern rule with stem 'Makefile.tmp.ym'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.ym'.
     Trying pattern rule with stem 'Makefile.tmp.ym'.
     Trying implicit prerequisite 's.Makefile.tmp.ym'.
     Trying pattern rule with stem 'Makefile.tmp.ym'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.ym'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Rejecting impossible implicit prerequisite 'Makefile.tmp.r'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.s'.
   Looking for a rule with intermediate file 'Makefile.tmp.s'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.S'.
    Trying pattern rule with stem 'Makefile.tmp.s'.
    Trying implicit prerequisite 'Makefile.tmp.s,v'.
    Trying pattern rule with stem 'Makefile.tmp.s'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.s,v'.
    Trying pattern rule with stem 'Makefile.tmp.s'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.s'.
    Trying pattern rule with stem 'Makefile.tmp.s'.
    Trying implicit prerequisite 's.Makefile.tmp.s'.
    Trying pattern rule with stem 'Makefile.tmp.s'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.s'.
    Trying pattern rule with stem 'Makefile.tmp'.
    Trying implicit prerequisite 'Makefile.tmp.S'.
    Looking for a rule with intermediate file 'Makefile.tmp.S'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.tmp.S'.
     Trying implicit prerequisite 'Makefile.tmp.S,v'.
     Trying pattern rule with stem 'Makefile.tmp.S'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.S,v'.
     Trying pattern rule with stem 'Makefile.tmp.S'.
     Trying implicit prerequisite 'RCS/Makefile.tmp.S'.
     Trying pattern rule with stem 'Makefile.tmp.S'.
     Trying implicit prerequisite 's.Makefile.tmp.S'.
     Trying pattern rule with stem 'Makefile.tmp.S'.
     Trying implicit prerequisite 'SCCS/s.Makefile.tmp.S'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Rejecting impossible implicit prerequisite 'Makefile.tmp.S'.
   Trying pattern rule with stem 'Makefile.tmp'.
   Trying implicit prerequisite 'Makefile.tmp.mod'.
   Looking for a rule with intermediate file 'Makefile.tmp.mod'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.tmp.mod'.
    Trying implicit prerequisite 'Makefile.tmp.mod,v'.
    Trying pattern rule with stem 'Makefile.tmp.mod'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.mod,v'.
    Trying pattern rule with stem 'Makefile.tmp.mod'.
    Trying implicit prerequisite 'RCS/Makefile.tmp.mod'.
    Trying pattern rule with stem 'Makefile.tmp.mod'.
    Trying implicit prerequisite 's.Makefile.tmp.mod'.
    Trying pattern rule with stem 'Makefile.tmp.mod'.
    Trying implicit prerequisite 'SCCS/s.Makefile.tmp.mod'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.c'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.cc'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.C'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.cpp'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.p'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.f'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.F'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.m'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.r'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.s'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.S'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Rejecting impossible implicit prerequisite 'Makefile.tmp.mod'.
  Trying pattern rule with stem 'Makefile.tmp'.
  Trying implicit prerequisite 'Makefile.tmp.sh'.
  Looking for a rule with intermediate file 'Makefile.tmp.sh'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'Makefile.tmp.sh'.
   Trying implicit prerequisite 'Makefile.tmp.sh,v'.
   Trying pattern rule with stem 'Makefile.tmp.sh'.
   Trying implicit prerequisite 'RCS/Makefile.tmp.sh,v'.
   Trying pattern rule with stem 'Makefile.tmp.sh'.
   Trying implicit prerequisite 'RCS/Makefile.tmp.sh'.
   Trying pattern rule with stem 'Makefile.tmp.sh'.
   Trying implicit prerequisite 's.Makefile.tmp.sh'.
   Trying pattern rule with stem 'Makefile.tmp.sh'.
   Trying implicit prerequisite 'SCCS/s.Makefile.tmp.sh'.
  No implicit rule found for 'Makefile.tmp'.
  Finished prerequisites of target file 'Makefile.tmp'.
 No need to remake target 'Makefile.tmp'.
Updating goal targets....
Considering target file 'help'.
 File 'help' does not exist.
 Finished prerequisites of target file 'help'.
Must remake target 'help'.
CreateProcess(C:\cygwin64\bin\ls.exe,ls,...)
Main thread handle = 000000000000008C

но что важно, так это, наверное, первая и последняя части:

GNU Make 4.1
Built for Windows32
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
find_and_set_shell() path search set default_shell = C:/cygwin64/bin/sh.exe
Reading makefiles...
Reading makefile 'Makefile.tmp'...
Updating makefiles....
 Considering target file 'Makefile.tmp'.
  Looking for an implicit rule for 'Makefile.tmp'.
  Trying pattern rule with stem 'Makefile.tmp'.
. . . . 
. . . . 
   Trying implicit prerequisite 'SCCS/s.Makefile.tmp.sh'.
  No implicit rule found for 'Makefile.tmp'.
  Finished prerequisites of target file 'Makefile.tmp'.
 No need to remake target 'Makefile.tmp'.
Updating goal targets....
Considering target file 'help'.
 File 'help' does not exist.
 Finished prerequisites of target file 'help'.
Must remake target 'help'.
CreateProcess(C:\cygwin64\bin\ls.exe,ls,...)
Main thread handle = 000000000000008C

Итак, как видите, он не выполняет ни команду echo, ни команду ls. Если я закомментирую команду shell, я увижу сообщение TESTING, которое будет отражено на терминале.

Очевидно, что make.exe DS-5 был создан для Windows. Должны ли быть проблемы с вызовом из Cygwin bash? Если да, то почему это хорошо работает на машине с Win 7?

ОБНОВЛЕНИЕ 2 с дополнительной информацией:

Я повторил тест, на этот раз из подсказки Windows CMD. Я заменил команду ls в строке bshell на команду dir. Удивительно, но такое же поведение происходит и на CMD!

Итак, очевидно, проблема в вызове функции shell make.


person ysap    schedule 15.07.2017    source источник
comment
У вас есть другая марка на пути? Main thread handle НЕ входит в состав cygwin только в сборке Windows   -  person matzeri    schedule 15.07.2017
comment
@matzeri - AFAICT, единственный make.exe, который у меня есть, находится в C:\DS-5_v5.26.2\bin. Более того, в сценарии оболочки, который я использую для вызова make, я явно указал полный путь к этой программе make.   -  person ysap    schedule 15.07.2017
comment
Обновленный вопрос с дополнительной информацией.   -  person ysap    schedule 15.07.2017
comment
Вы нашли решение этой проблемы? У меня точно такая же проблема с DS-5 5.23.1   -  person Satrapes    schedule 23.04.2018
comment
@Satrapes - Вы читали обновление 3 TL; DR? Я использую Cygwin make вместо того, который включен в DS-5.   -  person ysap    schedule 23.04.2018
comment
Да, спасибо за это, я сделал то же самое, но мне просто интересно, нашли ли вы когда-нибудь возможность выяснить, почему не работает DS5 make.   -  person Satrapes    schedule 24.04.2018
comment
@Satrapes - Нет, к сожалению. Как только мой поток заработал, я оставил эту проблему позади.   -  person ysap    schedule 24.04.2018


Ответы (1)


После обращения в службу поддержки ARM я получил следующий ответ:

With regards to the problem you are seeing this is a known issue with GNU 
make version 4.1 supplied by ARM with DS5.  This version of make was shipped 
with DS5 versions 5.23 to 5.26. DS5-5.22 used make 3.81, and DS5-5.27 and 
later have used make 4.2 - neither of which suffer from this defect.

There are three possible workarounds in your case:
1 - Avoid using the "shell" command in your make script - this is probably 
not ideal!
2 - Upgrade your DS-5 version to 5.27 or later - this may or may not be an 
option for you.
3 - Download[*] a different version of GNU make and use it in place of the 
version 3.81 that was supplied with your current version of DS-5.

[*] - Although make is freely available under GPL, unfortunately there are 
legal implications involved with its redistribution which is why I can't 
simply email you an alternative version of make.

Спасибо Алексу из службы поддержки ARM за это.

person Satrapes    schedule 03.05.2018
comment
Спасибо, что следите за этим. По сути, его третье предложение - это решение, которое сработало для меня, используя make Cygwin. - person ysap; 04.05.2018