Como portar $(shell find . -name '*.cpp') no Windows?

Como portar $(shell find . -name '*.cpp') no Windows?

Eu tenho isso no makefile:

# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')

Então eu queria criar FINDum comando genérico que se comportasse corretamente no Windows e no Linux:

ifeq ($(OS),Windows_NT)
   # WINDOWS
   RM = erase /Q
   FIND = ???
else
   # LINUX
   ifeq ($(shell uname), Linux)
      RM = rm -f
      # This is probably wrong too, but I have no idea how to do it right
      FIND = $(find . -name '$1')
   endif
endif

Claro, eu nem sei como fazer um modelo de localização parametrizado para Linux. Mas o mais importante é que não consigo encontrar o comando para localizar todos os arquivos por padrão. O Windows tem isto:

dir * /s/b | findstr \.cpp$

O que é lindo, mas usa expressão regular... Como posso portar isso corretamente, para que find se comporte bem em ambos os sistemas? O makefile não possui seu próprio método para localizar arquivos?

informação relacionada