CC = gcc
CFLAGS = -Wall -O0 -g -D_GNU_SOURCE -D_XOPEN_SOURCE=600
#CFLAGS = -Wall -O2 -fomit-frame-pointer -DGNU_SOURCE -D_XOPEN_SOURCE=600
LD = ld
TARGET = test
GOSTCAT = gostcat
OBJS = gost.o
LIBMAJOR = 1
LIBMINOR = 0.0
LIBVERSION = $(LIBMAJOR).$(LIBMINOR)
LIBSHARED = libgost.so.$(LIBVERSION)

.PHONY = clean

all: $(LIBSHARED) $(TARGET) $(GOSTCAT)

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

$(LIBSHARED): $(OBJS)
	$(CC) -shared -Wl,-soname,libgost.so.$(LIBMAJOR) \
		-o $(LIBSHARED) $(OBJS) -lc
	ln -f -s $(LIBSHARED) libgost.so.1
	ln -f -s $(LIBSHARED) libgost.so

$(TARGET): test.o $(LIBSHARED)
	$(CC) -L./ $(CFLAGS) -o $@ $< -l gost

$(GOSTCAT): gostcat.o $(LIBSHARED)
	$(CC) -L./ $(CFLAGS) -o $@ $< -l gost

clean:
	rm -rf *~ *.o $(TARGET) $(GOSTCAT) $(LIBSHARED) libgost.so libgost.so.1

#### Stop editing Makefile here. ####

sources = $(SOURCES)
include $(sources=.c=.d)

# Rule to make *.d files which contain header dependencies.
%.d: %.c
	@set -e; rm -f $@; \
	$(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

