LINKX = -L/usr/X11R6/lib64 -L/usr/X11R6/lib \
	-lX11 -lXext -lXv -lGL -lXxf86vm -lXxf86dga
GUI_OBJS := main.o loop.o buffers.o fft.o
DRIVER_OBJS := driver_main.o driver_log.o driver_serial.o driver_sniffer.o \
	driver_cooker.o driver_master.o driver_embla_cmd.o
CAPTURE_OBJS := video_main.o video_capture.o
COMMON_OBJS := rw.o timer.o socket_utils.o
EXTERN_OBJS := YGL2/ygl.o gui/gui.o mformat/mformat.o network/ipv46.o

.PHONY: all $(EXTERN_OBJS)

all: gembla embla-driver video-driver

# Graphical user interface
gembla: $(GUI_OBJS) $(COMMON_OBJS) $(EXTERN_OBJS)
	gcc -Wall -Wl,-s -o $(@) $(^) $(LINKX) -lm

# Driver
embla-driver: $(DRIVER_OBJS) $(COMMON_OBJS) network/ipv46.o
	gcc -Wall -Wl,-s -o $(@) $(^)

# Video capture
video-driver: $(CAPTURE_OBJS) $(COMMON_OBJS) $(EXTERN_OBJS)
	gcc -Wall -Wl,-s -o $(@) $(^) $(LINKX)

# Local	
$(DRIVER_OBJS) $(GUI_OBJS) $(CAPTURE_OBJS) $(COMMON_OBJS) : %.o : %.c %.h
	gcc -Wall -c -o $(@) $(<)

# External
$(EXTERN_OBJS) :
	cd $(@D); make $(@F)
