ifeq ($(OSTYPE), cygwin)
gcc_dbg_cc = gcc -O0 -Wall
gcc_opt_cc = gcc -O2 -Wall
clang_dbg_cc = clang -O0 -Wall
clang_opt_cc = clang -O2 -Wall
mingw_dbg_cc = x86_64-w64-mingw32-gcc -O0 -Wall
mingw_opt_cc = x86_64-w64-mingw32-gcc -O2 -Wall
eext = .exe
targets = \
	sinon-gcc-o0$(eext) \
	sinon-gcc-o2$(eext) \
	sinon-clang-o0$(eext) \
	sinon-clang-o2$(eext) \
	sinon-mingw-o0$(eext) \
	sinon-mingw-o2$(eext)
else
gcc_dbg_cc = gcc -O0 -Wall
gcc_opt_cc = gcc -O2 -Wall
clang_dbg_cc = clang -O0 -Wall
clang_opt_cc = clang -O2 -Wall
targets = \
	sinon-gcc-o0 \
	sinon-gcc-o2 \
	sinon-clang-o0 \
	sinon-clang-o2
endif

source = sinon.c

all: $(targets)

sinon-gcc-o0$(eext): $(source)
	$(gcc_dbg_cc) $< -o $@

sinon-gcc-o2$(eext): $(source)
	$(gcc_opt_cc) $< -o $@

sinon-clang-o0$(eext): $(source)
	$(clang_dbg_cc) $< -o $@

sinon-clang-o2$(eext): $(source)
	$(clang_opt_cc) $< -o $@

sinon-mingw-o0$(eext): $(source)
	$(mingw_dbg_cc) $< -o $@

sinon-mingw-o2$(eext): $(source)
	$(mingw_opt_cc) $< -o $@

find_cycle$(eext): find_cycle.c
	gcc -O2 -Wall -Werror -fexpensive-optimizations $< -o $@

msg.bf: msg$(eext)
	./$<
	sed -ne 's/.*BF:\([^ ]*\) .*/\1/;T;p' msg.c > $@

msg$(eext): msg.c
	gcc -O2 -Wall -Werror -fexpensive-optimizations $< -o $@

clean:
	-rm -f $(targets) tmp.c msg.bf

backup:
	-rm -f backup.tar.xz
	tar cf backup.tar *.c *.sh *.pl *.txt *.log Makefile entry/* rinia/*
	xz -9 backup.tar
