#
# Makefile (guts)
#
# Copyright 1998   rubini@linux.it
# (this Makefile does more than needed. it's my standard Makefile for drivers)
#
##########
#

# Comment/uncomment the following line to enable/disable debugging
#DEBUG = y

INSTALL = install -c
INSTALLBIN = $(INSTALL) -m 755
INSTALLLIB = $(INSTALL) -m 644

ifndef prefix
  prefix = $(DESTDIR)/usr/local
endif

TARGET = guts

LIBDIR = $(prefix)/lib
BINDIR = $(prefix)/bin
INCDIR = $(prefix)/include
MANDIR = $(prefix)/share/man
INFODIR = $(prefix)/share/info
MAN1DIR = $(MANDIR)/man1
MAN4DIR = $(MANDIR)/man4

############## no more editing...

INSTALLDIRS =  $(MODDIR) $(BINDIR) $(LIBDIR) $(INCDIR) \
        $(MANDIR) $(MAN1DIR) $(MAN3DIR) $(MAN4DIR)

CLIENTOBJS = 
ALLCLIENTOBJS = $(CLIENTOBJS)
CLIENTS =  $(CLIENTOBJS:.o=)  
ALLCLIENTS = $(ALLCLIENTOBJS:.o=)
SCRIPTS = guts_calib guts_panel
TOOLS = guts_control guts_to_ascii warp
MANPAGES =

ifeq ($(DEBUG),y)
  DEBFLAGS = -O -g -DPX_DEBUG # "-O" is needed to expand inlines
  LDFLAGS =
else
  DEBFLAGS =  -O3 -fomit-frame-pointer
  LDFLAGS = -s
endif

%: %.o
	$(CC) $(CFLAGS) $^ -o $@ -L. 
#-l$(TARGET)

%.i: %.c
	$(CC) $(CFLAGS) -E $^ -o $@

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

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

CFLAGS = -Wall $(DEBFLAGS)
LDFLAGS = -L/usr/X11R6/lib -lX11 -lXi

## force make depend
#ifneq (.depend,$(wildcard .depend))
#all: depend
#endif



all: $(ALLCLIENTOBJS) $(ALLCLIENTS) $(MANPAGES) $(TOOLS)
	$(MAKE) -C doc

ifndef RANLIB
  RANLIB = ranlib
endif

install: all
	install -d $(BINDIR)
	@-depmod -a 2> /dev/null
	install -c -m 0755 $(CLIENTS) $(SCRIPTS) $(TOOLS) $(BINDIR) 
	make -C doc install


clean-with-docs:
	rm -f $(ALLCLIENTOBJS) $(ALLCLIENTS) $(MANPAGES) $(TOOLS) \
		xf86Guts.o calib-math.o

clean: clean-with-docs
	make -C doc clean

tar:
	@if [ "x" = "x$(RELEASE)" ]; then \
	    n=`basename \`pwd\``; cd ..; tar cvf - $$n | gzip > $$n.tar.gz; \
	    echo 'you can set a numeric $$(RELEASE) to make a named tar'; \
	else \
	    mkdir ../$(TARGET)-$(RELEASE) || exit 1; \
	    cp -a . ../$(TARGET)-$(RELEASE) && cd .. && \
	      tar --exclude '*/CVS*' \
	  	-cvzf $(TARGET)-$(RELEASE).tar.gz $(TARGET)-$(RELEASE); \
	fi
	grep VERSION *.[ch] doc/doc.*

distrib: all clean-with-docs tar

#depend dep:
#	$(CC) -I$(INCLUDEDIR) -MM $(DEPENDABLES) > .depend
#
#DEPEND DEP:
#	$(CC) -I$(INCLUDEDIR) -M *$(DEPENDABLES) > .depend
#
#
#ifeq (.depend,$(wildcard .depend))
#include .depend
#endif

####################
# Only allow this rule if XFREE_SOURCE is defined in the environment.
# I used 4.1.0 but any 4.x should work

ifdef XFREE_SOURCE
    # define some shorthands
    XFREE_SERVER = $(XFREE_SOURCE)/programs/Xserver

all: guts_drv.o

guts_drv.o:  xf86Guts.o calib-math.o
	$(LD) -r $^ -o $@

xf86Guts.o: xf86Guts.c 
	gcc -O2 -fno-strength-reduce -ansi -pedantic -Wall -Wpointer-arith \
	-I. \
	-I$(XFREE_SERVER)/hw/xfree86/common \
	-I$(XFREE_SERVER)/hw/xfree86/loader \
	-I$(XFREE_SERVER)/hw/xfree86/os-support \
	-I$(XFREE_SERVER)/include \
	-I$(XFREE_SERVER)/mi \
	-I$(XFREE_SOURCE)/exports/include/X11 \
	-I$(XFREE_SOURCE)/include/extensions \
	-I$(XFREE_SOURCE) \
	-I$(XFREE_SOURCE)/exports/include \
	-Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE \
	-D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE \
	-I$(INCLUDEDIR) \
	-D_GNU_SOURCE  -DSHAPE \
	-DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY -DTOGCUP  -DXF86BIGFONT \
	-DDPMSExtension  -DPIXPRIV -DPANORAMIX  -DGCCUSESGAS -DAVOID_GLYPHBLT \
	-DPIXPRIV -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \
	-DXFree86Server -DXF86VIDMODE  -DSMART_SCHEDULE \
	-DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG \
	-DFUNCPROTO=15 -DNARROWPROTO  -DIN_MODULE \
	-c $^ -o $@


endif
