Subversion Repositories Vertical

Rev

Blame | Last modification | View Log | RSS feed

CFLAGS+=-D LINUX  -Wall
CFLAGS+= -DYY_MAIN=0 -fpic

CFLAGS+=-I../cmdlib -I../vertlib 
CFLAGS+=-I../vertcl_src -I../versionlib
CFLAGS+=-I../include
CFLAGS+=-I.. 

# interesting linker commands -dll -shared -O2 -mno-cygwin      
#LDFLAGS =  /usr/lib/crt0.o -L/usr/lib -lregex  -liberty -lfl
LDFLAGS =   -lpcre -lfl -g -Wl,-L/mnt/card/vert03/lib 

#rules alter to match funny RISCOS yacc

#.y.o:
#       $(YACC) $(YFLAGS) $<    
#       mv y.tab.c $*.c
#       mv y.tab.h $*.h
#       $(CC) $(CFLAGS) $*.c -c -o $@
#       rm $*_tab.c


.y.c:
        $(YACC) $(YFLAGS) $<
        mv $*.tab.c $*.c
        mv $*.tab.h $*.h

.l.c:
        $(LEX) $(LFLAGS) $<
        mv lex.yy.c $*.c
   
#
#       mv $*.o $@
#



SRCS:=$(wildcard *.c)
HDRS:=$(wildcard *.h)
ifneq ($(TARG),vertcl)
LEXS:=$(TARG)_lex.l
YACCS:=$(TARG)_yacc.y
endif

OBJS:=$(SRCS:.c=.o)
COMP_C:=$(LEXS:.l=.c)
COMP_C+=$(YACCS:.y=.c)
OBJS+=$(LEXS:.l=.o)
OBJS+=$(YACCS:.y=.o)

OBJS:=$(sort $(OBJS))

DEPS:=$(OBJS:.o=.d)


OBJS:=$(patsubst %,../obj/%,$(OBJS))

LIBS:=  $(TARG)lib.a  
SOLIBS:=  -lcmd -lvert -lversion 


ifneq ($(TARG),vertcl)
#../targets/$(TARG)_read:$(LIBS) $(OBJS)
#../targets/$(TARG)_read: $(OBJS)
../targets/$(TARG)_read: $(LIBS)
#       $(CC) -o $@  $(LIBS)  $(LDFLAGS)
        $(CC) -o $@ $<  -dy $(LDFLAGS) $(SOLIBS) 
else
all:
        @echo avoiding making $(TARG)_read
endif

$(OBJS):$(SRCS) $(HDRS)
        $(CC) $(CFLAGS) $(patsubst ../obj/%.o,%.c,$@) -c -o $@

$(LEXS):$(TARG)_yacc.h

$(TARG)_yacc.h:$(TARG)_yacc.y

$(TARG)lib.a:$(OBJS)
        ar rs $@ $(OBJS)
#       ld -o $@ --shared $(OBJS)

clean:
        rm -f $(OBJS) $(TARG)lib.a $(TARG)lib.so  $(COMP_C)  *.exe *.a *.bak *.org y.output
        rm -f *_yacc.c *_lex.c $(DEPS) *.o

.SUFFIXES: .d .c .o

ifneq ($(MAKECMDGOALS),clean)
include $(DEPS)
endif

../obj/%.o:%.c
        $(CC) $(CFLAGS) $< -c -o $@


%.d:%.c
        $(CC) -c -E $(CFLAGS) -MMD $< > /dev/null 
#...include correct path
        sed -e "s,\(.*\.o\),../obj/\1,g" -e "s,:,:../make_targ ,"< $@ > /tmp/dep
        mv /tmp/dep $@