Try the following:

$(if $(filter $(HOSTOS),linux windows),,$(error HostOS not set to
(linux | windows)))

clean:  clean_$(HOSTOS)
        @echo "Cleaned";

clean_windows:  SHELL:=cmd.exe

clean_windows:
        @echo "$@: SHELL is set to '$(SHELL)'"


clean_linux:
        @echo "$@: SHELL is set to '$(SHELL)'"


Thanks, this worked for me quite well.

However, this Makefile also reportedly handles bsd, and osx too, with what seems like the same commands. Is there way I can make multiple targets have the same recipe, to avoid duplication?

clean:  clean_$(PLATFORM_OS)
        @echo Removed all generated files

clean_WINDOWS:  SHELL:=cmd.exe

clean_WINDOWS:
        del *.o /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME).a /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME)dll.a /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME)dll /s

clean_LINUX:
clean_BSD:  < -- I want these 3 targets to all execute the same recipe
clean_OSX:
rm -fv $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).bc $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so*

I would like clean_LINUX, BSD, and OSX to all execute the same recipe

Best wishes,
Peter D.> Try the following:

$(if $(filter $(HOSTOS),linux windows),,$(error HostOS not set to
(linux | windows)))

clean:  clean_$(HOSTOS)
        @echo "Cleaned";

clean_windows:  SHELL:=cmd.exe

clean_windows:
        @echo "$@: SHELL is set to '$(SHELL)'"


clean_linux:
        @echo "$@: SHELL is set to '$(SHELL)'"


Thanks, this worked for me quite well.

However, this Makefile also reportedly handles bsd, and osx too, with what seems like the same commands. Is there way I can make multiple targets have the same recipe, to avoid duplication?

clean:  clean_$(PLATFORM_OS)
        @echo Removed all generated files

clean_WINDOWS:  SHELL:=cmd.exe

clean_WINDOWS:
        del *.o /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME).a /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME)dll.a /s
        del $(RAYLIB_RELEASE_PATH)\lib$(RAYLIB_LIB_NAME)dll /s

clean_LINUX:
clean_BSD:  < -- I want these 3 targets to all execute the same recipe
clean_OSX:
rm -fv $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).bc $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so*

I would like clean_LINUX, BSD, and OSX to all execute the same recipe

Best wishes,
Peter D.

Reply via email to