Makefile target with a template to create a symbolic link using the target string

I need a set of makefile rules that create a symbolic link to one of several code modules before creating a project. The name of the target will determine the file pointed to by the symbolic link. For example:

  • User calls 'make R3000'
  • Make sees that 'data.asm' does not exist yet, therefore a symbolic link is created from 'data_R3000.asm' to 'data.asm'
  • The build process continues using data.asm

How do I configure the rules for this?

+4
source share
2 answers

Maybe something like:

MODULES := $(patsubst data_%.asm,%,$(wildcard data_*.asm))

all:
    ...

data.asm:
        [ -n "$(filter $(MAKECMDGOALS),$(MODULES))" ] || { echo unknown module: $(MAKECMDGOALS) ; exit 1; }
        ln -s $(filter $(MAKECMDGOALS),$(MODULES)) $@

, data.asm .

+4

- :

.PHONY mklink

mklink:
    test -e data_$(MAKECMDGOALS).asm || exit 1
    ln -s data_$(MAKECMDGOALS).asm data.asm

( ) mklink. , data.asm, , make R3000, data.asm, , make L2000, data.asm ( , , ). , , , 1, . , MAKECMDGOALS - .

0

All Articles