SHELL = /bin/sh
AS = gas
CC = gcc
CXX  = g++
LINK = gcc
DEBUG = gdb
CFLAGS = -Wall -ansi $(INCS)
CXXFLAGS = $(CFLAGS)
CPPFLAGS =
CDEBUG = -g -O0
LDEBUG = -g
LDFLAGS =
INCS = -I/usr/include -I/usr/local/include
LIBS = -L. -L/lib -L/usr/lib -L/usr/local/lib -lm
OBJS = batoh.o
BIN = batoh
OBJS2 = batoh-ga.o
BIN2 = batoh-ga

.PHONY: all clean debug pedantic release run bug
# cancelling implicit rules
.SUFFIXES:
#.SUFFIXES: .c .cpp .o

all: $(BIN) $(BIN2)

$(BIN): $(OBJS)
	$(LINK) $(LDFLAGS) -o $(BIN) $(OBJS) $(LIBS)  

$(BIN2): $(OBJS2)
	$(LINK) $(LDFLAGS) -o $(BIN2) $(OBJS2) $(LIBS)  

#$(OBJS): globals.h

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

#.cpp.o:
%.o : %.cpp
	$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<

clean:
	rm -f $(BIN) $(BIN2) *.o

debug: CFLAGS := $(CDEBUG) $(CFLAGS) -DDEBUG
debug: LDFLAGS := $(LDEBUG) $(LDFLAGS)
debug: $(BIN) $(BIN2)

pedantic: CFLAGS += -pedantic
pedantic: $(BIN) $(BIN2)

release: LDFLAGS += -s
release: clean $(BIN) $(BIN2)

run: $(BIN)
	./$(BIN)

bug: $(BIN)
	$(DEBUG) $(BIN)


#########################
# File-specific section #
#########################

# C   modules - headers dependencies
#main.o: %.o : %.h

# C++ modules - headers dependencies
#main.o: %.o : %.hpp
