CC ?= cc
CFLAGS ?= -O2 -pipe -Wall -std=c99
CXX ?= c++
CXXFLAGS ?= -O2 -pipe -Wall -std=c++11

CPP_COMMON_O = drweb_clamd_api_common.o
CPP_EXAMPLE_O = drweb_clamd_api_example.o
CPP_SESSION_EXAMPLE_O = drweb_clamd_api_session_example.o

C_COMMON_O = drweb_clamd_c_api_common.o
C_EXAMPLE_O = drweb_clamd_c_api_example.o
C_SESSION_EXAMPLE_O = drweb_clamd_c_api_session_example.o

all: \
cpp_examples \
c_examples

cpp_examples: \
drweb_clamd_api_example \
drweb_clamd_api_session_example

c_examples: \
drweb_clamd_c_api_example \
drweb_clamd_c_api_session_example

clean:
	rm -f drweb_clamd_api_example
	rm -f drweb_clamd_api_session_example
	rm -f drweb_clamd_c_api_example
	rm -f drweb_clamd_c_api_session_example
	rm -f $(CPP_COMMON_O)
	rm -f $(CPP_EXAMPLE_O)
	rm -f $(CPP_SESSION_EXAMPLE_O)
	rm -f $(C_COMMON_O)
	rm -f $(C_EXAMPLE_O)
	rm -f $(C_SESSION_EXAMPLE_O)

drweb_clamd_api_%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $^

drweb_clamd_c_api_%.o: drweb_clamd_c_api_%.c
	$(CC) $(CFLAGS) -c $^

drweb_clamd_api_example: $(CPP_COMMON_O) $(CPP_EXAMPLE_O)
	$(CXX) -o $@ $(CPP_COMMON_O) $(CPP_EXAMPLE_O) $(LDFLAGS)

drweb_clamd_api_session_example: $(CPP_COMMON_O) $(CPP_SESSION_EXAMPLE_O)
	$(CXX) -o $@ $(CPP_COMMON_O) $(CPP_SESSION_EXAMPLE_O) $(LDFLAGS)

drweb_clamd_c_api_example: $(C_COMMON_O) $(C_EXAMPLE_O)
	$(CC) -o $@ $(C_COMMON_O) $(C_EXAMPLE_O) $(LDFLAGS)

drweb_clamd_c_api_session_example: $(C_COMMON_O) $(C_SESSION_EXAMPLE_O)
	$(CC) -o $@ $(C_COMMON_O) $(C_SESSION_EXAMPLE_O) $(LDFLAGS)
