MakefileΒΆ

Download

##########################################################
#
#  Makefile for the hsmCommunicator FSMLang example
#

SRC = $(wildcard *actions.c)
FSM_SRC = $(wildcard *.fsm)

FSM_FLAGS=-ts --generate-weak-fns=false

CFLAGS=-DHSM_COMMUNICATOR_DEBUG \
       -DESTABLISH_SESSION_DEBUG \
       -DSEND_MESSAGE_DEBUG \
       -g -ggdb

## FSMLang start

.SUFFIXES: .fsm .html .plantuml

FSM ?= fsm

GENERATED_SRC = $(shell $(FSM) -M $(FSM_FLAGS) $(FSM_SRC))
GENERATED_HDR = $(shell $(FSM) -Mh $(FSM_FLAGS) $(FSM_SRC))

cleanfsm:
        @-rm -f $(GENERATED_SRC) 2> /dev/null
        @-rm -f $(GENERATED_HDR) 2> /dev/null
        @-rm -f *.fsmd           2> /dev/null

%.fsmd: %.fsm
        @set -e; $(FSM) -Md $(FSM_FLAGS) $< > $@

.fsm.o:
        @$(FSM) $(FSM_FLAGS) $< > fsmout
        @$(CC) -c $(CFLAGS) $*.c
        @rm -f $*.c

.fsm.c:
        @$(FSM) $(FSM_FLAGS) $< > fsmout

.fsm.h:
        @$(FSM) $(FSM_FLAGS) $< > fsmout

ifneq ($(MAKECMDGOALS),clean)
-include $(FSM_SRC:.fsm=.fsmd)
endif

## FSMLang end

OBJS=$(SRC:.c=.o) $(GENERATED_SRC:.c=.o)

all: hsmCommunicator

test.out: hsmCommunicator
        ./$< >$@

hsmCommunicator: $(OBJS) $(FSM) Makefile
        $(CC) -o $@ $(LDFLAGS) $(OBJS)

clean: cleanfsm
        @-rm -f $(OBJS)            2> /dev/null
        @-rm -f hsmCommunicator 2> /dev/null
        @-rm -f test.out           2> /dev/null

$(SRC): hsmCommunicator_priv.h