MakefileΒΆ

Download

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

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

FSM_FLAGS=-ts --generate-weak-fns=false --force-generation-of-event-passing-actions

CFLAGS=-DHSM_COMMUNICATOR_DEBUG                   \
       -DHSM_COMMUNICATOR_ESTABLISH_SESSION_DEBUG \
       -DHSM_COMMUNICATOR_SEND_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)
        @-astyle $(GENERATED_SRC) $(GENERATED_HDR)

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

$(SRC): hsmCommunicator_priv.h