how to write foreach in makefile?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

how to write foreach in makefile?

Vsyache Puz
How to write foreach cycles in Makefile properly?

I have read

https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html#Foreach-Function

https://www.gnu.org/software/make/manual/html_node/Eval-Function.html#Eval-Function

https://www.gnu.org/software/make/manual/html_node/Value-Function.html#Value-Function


Or what I do wrong here (it says "Makefile:16: *** missing separator.
Stop."):


DISTFILES := /dir2/dir3/dir4 /dir2 /dir1 /dir1/file1 /dir1/dir2/file2
/dir1/dir2/file3 /dir1/file4

.PHONY: default_target

define DISTDIR_PROCESS_FILE_OR_DIRECTORY =
current_path=${file_or_dir_name}
ifeq ($${current_path},$${prev_path})
echo skip $${current_path}
else
echo mkdir -p $${current_path}
endif
prev_path:=$${current_path}
endef

default_target:
    $(foreach file_or_dir_name,$(sort ${DISTFILES}),$(info $(value
DISTDIR_PROCESS_FILE_OR_DIRECTORY)))



Thanks.



_______________________________________________
Help-make mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

how to write foreach in makefile?

Vsyache Puz

How to write foreach cycles in Makefile properly?

I have read

https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html#Foreach-Function

https://www.gnu.org/software/make/manual/html_node/Eval-Function.html#Eval-Function

https://www.gnu.org/software/make/manual/html_node/Value-Function.html#Value-Function


Or what I do wrong here (it says "Makefile:16: *** missing separator.
Stop."):



DISTFILES := /dir2/dir3/dir4 /dir2 /dir1 /dir1/file1 /dir1/dir2/file2 /dir1/dir2/file3 /dir1/file4

.PHONY: default_target

define DISTDIR_PROCESS_FILE_OR_DIRECTORY =
current_path=${file_or_dir_name}
ifeq ($${current_path},$${prev_path})
echo skip $${current_path}
else
echo mkdir -p $${current_path}
endif
prev_path:=$${current_path}
endef

default_target:
    $(foreach file_or_dir_name,$(sort ${DISTFILES}),$(info $(value DISTDIR_PROCESS_FILE_OR_DIRECTORY)))



Thanks.
_______________________________________________
Help-make mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

Re: how to write foreach in makefile?

Vsyache Puz
it's not ended, it's enDEF.


Internet people helped me to find the source of this error.
it happens because I used variable assignments inside target.
Makefiles don't work that way (makefile variables are assigned at global
scope).

On 06/26/2016 03:14 PM, Jay Lawrence wrote:

> Misspelled 'endif' as 'ended'?
>
> Sent from my iPhone
>
>> On Jun 26, 2016, at 1:58 AM, Vsyache Puz <[hidden email]> wrote:
>>
>>
>> How to write foreach cycles in Makefile properly?
>>
>> I have read
>>
>> https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html#Foreach-Function
>>
>> https://www.gnu.org/software/make/manual/html_node/Eval-Function.html#Eval-Function
>>
>> https://www.gnu.org/software/make/manual/html_node/Value-Function.html#Value-Function
>>
>>
>> Or what I do wrong here (it says "Makefile:16: *** missing separator.
>> Stop."):
>>
>>
>>
>> DISTFILES := /dir2/dir3/dir4 /dir2 /dir1 /dir1/file1 /dir1/dir2/file2 /dir1/dir2/file3 /dir1/file4
>>
>> .PHONY: default_target
>>
>> define DISTDIR_PROCESS_FILE_OR_DIRECTORY =
>> current_path=${file_or_dir_name}
>> ifeq ($${current_path},$${prev_path})
>> echo skip $${current_path}
>> else
>> echo mkdir -p $${current_path}
>> endif
>> prev_path:=$${current_path}
>> endef
>>
>> default_target:
>>    $(foreach file_or_dir_name,$(sort ${DISTFILES}),$(info $(value DISTDIR_PROCESS_FILE_OR_DIRECTORY)))
>>
>>
>>
>> Thanks.
>> _______________________________________________
>> Help-make mailing list
>> [hidden email]
>> https://lists.gnu.org/mailman/listinfo/help-make


_______________________________________________
Help-make mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-make