#
# Makefile for Fxtv
#

HAVE_XFREE86 = YES

ifneq ($(X11PREFIX),)                      # NetBSD
X11BASE      ?= $(X11PREFIX)
else
X11BASE      ?= /usr/X11R6
endif

X11BASEINST  ?= $(X11BASE)
LOCALBASE    ?= /usr/local
DEBUG        = NO
OS           = $(shell uname -s)
OS_MAJOR     = $(shell uname -r | cut -f1 -d\.)

override CF_VERS           = -DVERS_STR=\"1.03\"
override VIDEOLIB_DIR      = ./videolib
override INC               = -I$(X11BASE)/include -I$(LOCALBASE)/include \
	                     -I$(VIDEOLIB_DIR) -I.
override LIBDIRS           = $(X11BASE)/lib $(LOCALBASE)/lib
override SHELL             = /bin/sh

#
# NetBSD stuff
#
ifeq ($(OS),NetBSD)
  override INC            += -I/usr/pkg/include
  override LIBDIRS        += /usr/pkg/lib
  override LD_INC         += -lossaudio -lz
endif

#
# OpenBSD stuff
#
ifeq ($(OS),OpenBSD)
  override LD_INC         += -lossaudio
endif

#
# RPATH
#
ifeq ($(OS),FreeBSD)
ifeq ($(shell expr $(OS_MAJOR) '>' 2),1)
    override RPATH_FLAG      = -rpath-link
endif
endif
ifeq ($(OS),NetBSD)
  override RPATH_FLAG      = -R
endif

override LD_INC            = $(foreach dir,$(LIBDIRS),-Wl,-L,$(dir))
ifneq ($(RPATH_FLAG),)
  override LD_INC         += $(foreach dir,$(LIBDIRS),-Wl,$(RPATH_FLAG),$(dir))
endif

#
# CFLAGS
#
ifneq ($(DEBUG),NO)
  override CFLAGS          = -DDEBUG -g
else
  override CFLAGS          = -DNDEBUG -O2
endif
C_WARN_FLAG                = -Wall
override CFLAGS           += $(C_WARN_FLAG) $(INC) $(CF_VERS)
ifeq ($(HAVE_XFREE86),YES)
override CFLAGS           += -DHAVE_XFREE86
endif

override CFLAGS           += $(C_WARN_FLAG) -DX11BASE=\"$(X11BASEINST)\"

ifeq ($(OS), linux)
override CFLAGS            = $(CFLAGS) -DOLD_TUNER_IFACE
endif

#
# LDFLAGS,LIBS
#
override LDFLAGS           = $(LD_INC) 
override VIDEOLIB_LIB      = $(VIDEOLIB_DIR)/libvideo.a
override LIBS              = -ltiff -ljpeg -lXaw3d -lXmu -lXt -lXpm \
                             -lSM -lICE -lXext -lX11 -lm
ifeq ($(HAVE_XFREE86),YES)
  override LIBS           += -lXxf86dga -lXxf86vm
endif

ifneq ($(DEBUG),NO)
  override LDFLAGS        := -g $(LDFLAGS)
endif

override FXTV_LIBDIR       = $(X11BASEINST)/lib/X11/fxtv

override CSRC              = $(wildcard *.c)
override PIXMAPS           = $(wildcard bitmaps/*.x?m)
override CSRCOBJ           = $(CSRC:%.c=%.o)
override EXEC              = fxtv

all : $(EXEC)

%.o     : %.c
	@rm -f $*.o
	$(CC) $(CFLAGS) -c $<

$(EXEC) : $(CSRCOBJ) $(VIDEOLIB_LIB)
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
ifeq ($(DEBUG),NO)
	strip $(EXEC)
endif

$(VIDEOLIB_LIB) :
	cd $(VIDEOLIB_DIR) && $(MAKE) all

tv.o : tv.c app_rsrc.h

install : fxtv
	mkdir -p $(FXTV_LIBDIR)/bitmaps
	install -c -m 444 -o root $(PIXMAPS) $(FXTV_LIBDIR)/bitmaps
	install -c -m 444 -o root README $(FXTV_LIBDIR)
	mkdir -p $(X11BASEINST)/lib/X11/app-defaults
	install -c -m 444 -o root Fxtv $(X11BASEINST)/lib/X11/app-defaults
	mkdir -p $(X11BASEINST)/bin
	install -c -m 444 -o root fxtv.1 $(X11BASEINST)/man/man1/fxtv.1
	install -c -m 555 -o root fxtv $(X11BASEINST)/bin
	install -c -m 555 -o root fxtv_cnvt.sh $(FXTV_LIBDIR)

clean:
	rm -f *.o fxtv *.core *~
	cd $(VIDEOLIB_DIR) && $(MAKE) clean
