prefix  	:= /usr
exec_prefix	:= /usr
srcdir		:= .
dstdir  	:= /usr/share
slnkdir 	:= /usr/bin
VPATH		:= $(srcdir)

doc_files	:= docs INSTALL CREDITS FAQ GNUGPL HELP README TODO AGREEMENT remote.help

FILES_TO_INSTALL := *.tcl hotmlog.htm sndplay amsn amsn-remote amsn-remote-CLI amsn.desktop langlist
FILES_TO_INSTALL += $(doc_files)
FILES_TO_INSTALL += icons lang skins utils/base64 utils/drawboard utils/framec utils/http2.4
FILES_TO_INSTALL += utils/pixmapscroll
FILES_TO_INSTALL += utils/scalable-bg utils/sha1 utils/snit0.97 utils/BWidget-1.7.0
FILES_TO_INSTALL += plugins/inkdraw plugins/Nudge plugins/WebcamShooter

FILES_TO_EXCLUDE := lang/genpage.c lang/addkey.tcl lang/lang1.tmpl lang/lang2.tmpl lang/lang3.tmpl lang/langchk.sh lang/complete.pl lang/genlangfiles.c utils/webcamsn/webcamsn.tcl

capture_dir := $(srcdir)/utils/linux/capture
webcamsn_dir := $(srcdir)/utils/webcamsn
tkcximage_dir := $(srcdir)/utils/TkCximage
tray_dir := $(srcdir)/utils/linux/traydock

# programs
CC		:= i586-blackPanther-linux-gnu-gcc
CXX		:= i586-blackPanther-linux-gnu-g++

# misc
PACKAGE		:= amsn
ifeq (yes,yes)
BASEVERSION	:= 0.95
RELEASEVERSION	:= 1
else
BASEVERSION     := 0.95cvs
RELEASEVERSION  := `cat cvs_date|head -c8`
endif
VERSION		:= $(BASEVERSION)-$(RELEASEVERSION)

# for CFLAGS
#WARN_FLAGS	:= -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith
WARN_FLAGS	:= -w
LFS_FLAGS	:= -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
LIB_FLAGS	:= -I. -I$(capture_dir) -I$(capture_dir)/libng -I$(capture_dir)/structs
LIB_FLAGS	+= -I$(webcamsn_dir)/src -I$(tkcximage_dir)/src -I$(tkcximage_dir)/src/CxImage
LIB_FLAGS	+= -I$(tkcximage_dir)/src/zlib -I$(tkcximage_dir)/src/png -I$(tkcximage_dir)/src/jpeg
LIBDIR		:= /root/RPM/BUILD/amsn-0_95/amsn-0.95


# various libraries
THREAD_LIBS	:= -lpthread


# Directories in which the Tcl core can be found
TCL_INC_SPEC 	:= -I/usr/include
TCL_STUB_LIB_SPEC := -L/usr/lib -ltclstub8.4${TCL_DBGX}

# Directories in which the Tk core can be found
TK_INC_SPEC 	:= -I/usr/include
TK_STUB_LIB_SPEC := -L/usr/lib -ltkstub8.4

# C Flags for X
X_CFLAGS :=  -I/usr/X11R6/include

# stuff configure has found
FOUND_X11	:= yes
FOUND_OS	:= linux
USE_MMX		:= yes
USE_LIBNG	:= yes


# build final cflags
CFLAGS   := -O2  -pipe -Wp,-D_FORTIFY_SOURCE=2 -fomit-frame-pointer -march=i586 -mtune=pentiumpro
ifeq (no,no)
CFLAGS   += -O2
else
CFLAGS   += -g3 -DDEBUG
endif
CFLAGS   += $(WARN_FLAGS)
CFLAGS   += $(LFS_FLAGS)
CFLAGS	 += ${TCL_INC_SPEC}
CFLAGS	 += ${TK_INC_SPEC}
CFLAGS	 += ${X_CFLAGS}
CFLAGS   += $(LIB_FLAGS)
CFLAGS   += -DPACKAGE='"$(PACKAGE)"'
CFLAGS   += -DVERSION='"$(VERSION)"'
CFLAGS   += -DLIBDIR='"$(LIBDIR)"'
CXXFLAGS := $(CFLAGS)

# for gcc3
#CFLAGS   += -std-gnu99

# shared objects need -fPIC
CFLAGS   += -fPIC
CXXFLAGS += -fPIC

# libraries
LDLIBS  := 
LDFLAGS := 
ifeq (no,no)
LDFLAGS += -s
endif
X_LIBS  :=  -L/usr/X11R6/lib  -lSM -lICE -lX11 
CXX_LIB := -lstdc++

LDFLAGS	 += ${TCL_STUB_LIB_SPEC}
LDFLAGS	 += ${TK_STUB_LIB_SPEC}

ifeq ($(FOUND_OS),linux)
FILES_TO_INSTALL += utils/webcamsn/webcamsn.so utils/webcamsn/pkgIndex.tcl utils/webcamsn/webcamsn.tcl utils/TkCximage/TkCximage.so utils/TkCximage/pkgIndex.tcl utils/linux/capture/capture.so utils/linux/capture/pkgIndex.tcl utils/linux/capture/test.tcl utils/linux/traydock/libtray.so  utils/linux/traydock/pkgIndex.tcl utils/linux/capture/libng/plugins/drv0-v4l2.so utils/linux/capture/libng/plugins/drv1-v4l.so
FILES_TO_EXCLUDE += AppMain.tcl utils/linux/capture/test.tcl
endif

CONFIGURE_ARGS := i586-blackPanther-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var/lib --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib

#########################################################
# targets

build: all

Makefile: $(srcdir)/Makefile.in $(srcdir)/configure
	$(srcdir)/configure $(CONFIGURE_ARGS)
	

$(srcdir)/configure: $(srcdir)/configure.ac
	(cd $(srcdir); autoconf)

clean::
	find . -name \*~ -print | xargs rm -f
	find . -name \*.o -print | xargs rm -f
	find . -name \*.a -print | xargs rm -f
	find . -name \*.dep -print | xargs rm -f


distclean:: clean
	-rm -f Makefile Make.config
	-rm -f config.cache config.h config.log config.status


install:: $(FILES_TO_INSTALL)
	rm -Rf $(dstdir)/$(PACKAGE)
	mkdir --parents $(dstdir)/$(PACKAGE)
	mkdir -p $(slnkdir)
	@for p in $?; do \
			cp -Rf --parents $(srcdir)/$$p $(dstdir)/$(PACKAGE); \
		done
	find $(dstdir)/$(PACKAGE) -name CVS -print | xargs rm -Rf
	@for p in $(FILES_TO_EXCLUDE); do \
			rm -Rf $(dstdir)/$(PACKAGE)/$$p; \
		done

	ln -sf $(dstdir)/$(PACKAGE)/amsn $(slnkdir)/amsn
	ln -sf $(dstdir)/$(PACKAGE)/amsn-remote $(slnkdir)/amsn-remote
	ln -sf $(dstdir)/$(PACKAGE)/amsn-remote-CLI $(slnkdir)/amsn-remote-CLI

	chmod -R +rx $(dstdir)/$(PACKAGE)
	
	mkdir -p $(dstdir)/icons/hicolor
	cp -R $(srcdir)/icons/* $(dstdir)/icons/hicolor

	mkdir -p $(dstdir)/applications
	cp $(srcdir)/amsn.desktop $(dstdir)/applications

rpm-install:: $(FILES_TO_INSTALL)
	rm -Rf $(INSTALL_PREFIX)/$(dstdir)/$(PACKAGE)
	mkdir --parents $(INSTALL_PREFIX)/$(dstdir)/$(PACKAGE)
	@for p in $?; do \
			cp -Rf --parents $(srcdir)/$$p $(INSTALL_PREFIX)/$(dstdir)/$(PACKAGE); \
		done
	find $(INSTALL_PREFIX)/$(dstdir)/$(PACKAGE) -name CVS -print | xargs rm -Rf
	@for p in $(FILES_TO_EXCLUDE); do \
			rm -Rf $(INSTALL_PREFIX)/$(dstdir)/$(PACKAGE)/$$p; \
		done
	mkdir --parents $(INSTALL_PREFIX)/$(slnkdir)

	ln -sf $(dstdir)/$(PACKAGE)/amsn $(INSTALL_PREFIX)/$(slnkdir)/amsn
	ln -sf $(dstdir)/$(PACKAGE)/amsn-remote $(INSTALL_PREFIX)/$(slnkdir)/amsn-remote
	ln -sf $(dstdir)/$(PACKAGE)/amsn-remote-CLI $(INSTALL_PREFIX)/$(slnkdir)/amsn-remote-CLI

rpm: all
	mkdir -p ./distrib

	rm -f THIS.TK.SPEC
	echo "%define _builddir `pwd`" > THIS.AMSN.SPEC
	echo "%define _rpmdir /tmp/RPMS" >> THIS.AMSN.SPEC
	echo "%define _prefix $(prefix)" >> THIS.AMSN.SPEC
	echo "%define _tmppath /tmp" >> THIS.AMSN.SPEC
	echo "%define _datadir $(dstdir)/$(PACKAGE)" >> THIS.AMSN.SPEC
	echo "%define _bindir $(slnkdir)" >> THIS.AMSN.SPEC
	echo "%define _doc_files $(doc_files)" >> THIS.AMSN.SPEC
	echo "%define _platform `uname -m`" >> THIS.AMSN.SPEC
	echo "%define _version $(BASEVERSION)" >> THIS.AMSN.SPEC
	echo "%define __release $(RELEASEVERSION)" >> THIS.AMSN.SPEC

	cat amsn.spec >> THIS.AMSN.SPEC
	mkdir -p /tmp/RPMS
	rpmbuild -bb THIS.AMSN.SPEC
	rm -rf ./distrib/RPMS
	mv /tmp/RPMS ./distrib
	rm -rf /tmp/RPMS THIS.AMSN.SPEC

deb: all
	mkdir -p ./distrib/DEB

	sed "1s/#VERSION#/${VERSION}/" debian/changelog.in > debian/changelog
	fakeroot debian/rules clean
	fakeroot debian/rules binary VERSION=${VERSION}

	rm -f debian/changelog
	rm -rf debian/amsn

#########################################################
# include stuff

# subdirs

include $(tkcximage_dir)/Rules.mk
include $(tkcximage_dir)/src/Rules.mk
include $(tkcximage_dir)/src/CxImage/Rules.mk
include $(tkcximage_dir)/src/zlib/Rules.mk
include $(tkcximage_dir)/src/png/Rules.mk
include $(tkcximage_dir)/src/jpeg/Rules.mk
include $(tkcximage_dir)/src/Rules.mk

include $(webcamsn_dir)/Rules.mk
include $(webcamsn_dir)/src/Rules.mk

ifeq ($(FOUND_OS),linux)
  include $(capture_dir)/Rules.mk
  include $(capture_dir)/libng/Rules.mk
  include $(capture_dir)/libng/plugins/Rules.mk

  ifeq ($(FOUND_X11),yes)
      ADDLIBS	 += ${X_LIBS}
      include $(tray_dir)/Rules.mk
  endif
endif


#########################################################
# some rules ...

include $(srcdir)/Compile.mk
