# Makefile.internal.in for building the libsmbclient examples
# from within a samba build.
#
# Use Makfile for building the examples with a libsmbclient
# installed to /usr/local/samba

CC = cc

SAMBA_DIR = ../../source3
SAMBA_INCLUDES = -I$(SAMBA_DIR)/include
SAMBA_LIBPATH = -L$(SAMBA_DIR)/bin

GTK_CFLAGS = `gtk-config --cflags`
GTK_LIBS  = `gtk-config --libs`

#GTK_CFLAGS = `pkg-config gtk+-2.0 --cflags`
#GTK_LIBS = `pkg-config gtk+-2.0 --libs`

CCFLAGS =  -I/usr/local/include -Iinclude -I./include -I. -I. -I./../lib/replace -I./../lib/tevent -I./librpc -I./.. -I./../lib/popt  -O2 -pipe -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS $(FLAGS) -D_SAMBA_BUILD_=3 $(GTK_CFLAGS) $(SAMBA_INCLUDES)

PICFLAG=-fPIC
LDFLAGS= $(SAMBA_LIBPATH) -pie -L/usr/local/lib -L./bin

EXTERNAL_LIBS = -lexecinfo -liconv -lpthread   
LIBSMBCLIENT_LIBS = -lwbclient -lsmbclient -ltalloc -ltdb -ldl -lresolv
CMDLINE_LIBS = -lpopt
LIBS = $(EXTERNAL_LIBS) $(LIBSMBCLIENT_LIBS)

# Compile a source file. (.c --> .o)
COMPILE_CC = $(CC) -I. $(CCFLAGS) $(PICFLAG) -c $< -o $@
COMPILE = $(COMPILE_CC)

MAKEDIR = || exec false; \
	  if test -d "$$dir"; then :; else \
	  echo mkdir "$$dir"; \
	  mkdir -p "$$dir" >/dev/null 2>&1 || \
	  test -d "$$dir" || \
	  mkdir "$$dir" || \
	  exec false; fi || exec false

TESTS=	testsmbc \
	testacl \
	testacl2 \
	testacl3 \
	testbrowse \
	testbrowse2 \
	teststat \
	teststat2 \
	teststat3 \
	testtruncate \
	testchmod \
	testutime \
	testread \
	testwrite

#	tree \

all:	$(TESTS) smbsh

.c.o:
	@if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \
	dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi
	@echo Compiling $*.c
	@$(COMPILE) && exit 0;\
		echo "The following command failed:" 1>&2;\
		echo "$(COMPILE_CC)" 1>&2;\
		$(COMPILE_CC) >/dev/null 2>&1

testsmbc: testsmbc.o
	@echo Linking testsmbc
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS)

tree: tree.o
	@echo Linking tree
	@$(CC) $(GTK_CFLAGS) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(GTK_LIBS) $(LIBS)

testacl: testacl.o
	@echo Linking testacl
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testacl2: testacl2.o
	@echo Linking testacl2
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testacl3: testacl3.o
	@echo Linking testacl3
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testbrowse: testbrowse.o
	@echo Linking testbrowse
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testbrowse2: testbrowse2.o
	@echo Linking testbrowse2
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

teststat: teststat.o
	@echo Linking teststat
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

teststat2: teststat2.o
	@echo Linking teststat2
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

teststat3: teststat3.o
	@echo Linking teststat3
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testtruncate: testtruncate.o
	@echo Linking testtruncate
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testchmod: testchmod.o
	@echo Linking testchmod
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testutime: testutime.o
	@echo Linking testutime
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testread: testread.o
	@echo Linking testread
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testwrite: testwrite.o
	@echo Linking testwrite
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

testctx: testctx.o
	@echo Linking testctx
	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)

smbsh:
	make -C smbwrapper

clean:
	@rm -f *.o *~ $(TESTS)
	@make -C smbwrapper clean
