#
#	Makefile for SAMBA
#

-include ../../path.mk
-include ../../arch.mk

####################################################################################

MYNAME		:= samba
VERSION		:= 3.0.24
CURRDIR		:= $(shell pwd)
BUILD		:= build
BUILDDIR	:= $(CURRDIR)/$(BUILD)
PROGDIR		:= $(CURRDIR)/$(BUILD)/$(MYNAME)-$(VERSION)/source
PUREDIR		:= original
RUNDIR		:= /var/etc/samba
SRCDIR		:= $(CURRDIR)/sources
SRCTARBALL	:= samba-$(VERSION).tar.gz
CONFIG_SITE	:= $(PROGDIR)/config.site
DIFF		:= $(SRCTARBALL).alpha.diff
UNTAR		:= tar zxf

####################################################################################
.EXPORT_ALL_VARIABLES:

ifeq ($(BUILD), $(wildcard $(BUILD)))
all: all_builds
else
all: prepare_source all_builds
endif

all_builds: $(PROGDIR)/Makefile
	@echo -e "\033[32mBuilding $(MYNAME) ...\033[0m"
	$(Q)make -C $(PROGDIR)

install:
	@echo -e "\033[32mInstalling $(MYNAME) ...\033[0m"
	$(Q)[ -d $(TARGET)/sbin ] || mkdir -p $(TARGET)/sbin
	$(Q)cp -u $(PROGDIR)/bin/smbd $(TARGET)/sbin/
	$(Q)$(STRIP) $(TARGET)/sbin/smbd
#sam_pan add add link smbd, nmbd, smbpasswd together	
	$(Q)cd $(TARGET)/sbin && ln -s -f ./smbd ./smbpasswd
	$(Q)cd $(TARGET)/sbin && ln -s -f ./smbd ./nmbd

clean_builds:
	$(Q)-rm $(CONFIG_SITE)
	$(Q)-make -C $(PROGDIR) realdistclean

clean:
	@echo -e "\033[32mCleaning $(MYNAME) ...\033[0m"
	$(Q)rm -rf $(BUILDDIR)

.PHONY: all all_builds install clean_builds clean

####################################################################################

prepare_makefile $(PROGDIR)/Makefile:
	@echo -e "\033[32mGenerating Makefile of $(MYNAME) ...\033[0m"
	$(Q)echo "samba_cv_HAVE_GETTIMEOFDAY_TZ=yes" > $(CONFIG_SITE)
	$(Q)echo "samba_cv_USE_SETRESUID=yes" >> $(CONFIG_SITE)
	$(Q)echo "samba_cv_HAVE_SECURE_MKSTEMP=yes" >> $(CONFIG_SITE)
	$(Q)cd $(PROGDIR); \
			./configure \
				--target=$(HOST_TYPE) \
				--host=$(HOST_TYPE) \
				--prefix=$(TARGET) \
				--localstatedir=$(RUNDIR) \
				--with-privatedir=$(RUNDIR) \
				--with-lockdir=$(RUNDIR)/locks \
				--with-piddir=$(RUNDIR) \
				--with-configdir=$(RUNDIR) \
				--with-logfilebase=$(RUNDIR) \
				--with-sendfile-support \
				--with-included-popt \
				--with-included-iniparser \
				--with-aio-support \
				--without-automount \
				--without-winbind \
				--without-ldap \
				--without-sys-quotas \
				--without-ads \
				--disable-cups \
				--disable-pie \
				--enable-static=yes \
				--enable-shared=no
#sam_pan add link smbd, nmbd, smbpasswd together
	$(Q)cd $(PROGDIR) && patch -s ./Makefile          < $(SRCDIR)/patch/makefile.patch
	$(Q)cd $(PROGDIR)/smbd    && patch ./server.c     < $(SRCDIR)/patch/server.patch
	$(Q)cd $(PROGDIR)/utils   && patch ./smbpasswd.c  < $(SRCDIR)/patch/smbpasswd.patch
	$(Q)cd $(PROGDIR)/nmbd    && patch ./nmbd.c       < $(SRCDIR)/patch/nmbd.patch
	$(Q)cd $(PROGDIR)/include && patch ./includes.h   < $(SRCDIR)/patch/includes.patch
#sam_pan support large file(bigger than 4G)
	$(Q)cd $(PROGDIR) && patch -s ./Makefile          < $(SRCDIR)/patch/makefile_largefile.patch
	$(Q)cd $(PROGDIR)/include && patch ./config.h     < $(SRCDIR)/patch/config.h.patch
	$(Q)cd $(PROGDIR)/include && patch ./config.h     < $(SRCDIR)/patch/config.h.patch2
#sam_pan support sync file immediately
	$(Q)cd $(PROGDIR)/smbd    && patch ./close.c      < $(SRCDIR)/patch/smbd.close.c.patch
#sam_pan support win7 ans vista 
	$(Q)cd $(PROGDIR)/smbd    && patch ./trans2.c     < $(SRCDIR)/patch/smbd.trans2.c.patch
	$(Q)cd $(PROGDIR)/smbd    && patch ./msdfs.c      < $(SRCDIR)/patch/smbd.msdfs.c.patch
	$(Q)cd $(PROGDIR)/smbd    && patch ./msdfs.c      < $(SRCDIR)/patch/smbd.msdfs.c.patch2
	$(Q)cd $(PROGDIR)/include && patch ./config.h     < $(SRCDIR)/patch/config.h.patch3

prepare_source:
	@echo -e "\033[32mPreparing the source of $(MYNAME) ...\033[0m"
	$(Q)mkdir -p $(BUILDDIR)
	$(Q)cd $(BUILDDIR); $(UNTAR) $(SRCDIR)/$(SRCTARBALL)
	$(Q)chmod +w -R $(BUILDDIR)
	$(Q)patch -p0 < $(SRCDIR)/$(SRCTARBALL).alpha.diff

mkdiff: clean_builds
	@echo -e "\033[32mGenerating the diff file for $(MYNAME)...\033[0m"
	$(Q)rm -rf $(PUREDIR)
	$(Q)mkdir -p $(PUREDIR)
	$(Q)cd $(PUREDIR); $(UNTAR) $(SRCDIR)/$(SRCTARBALL)
	$(Q)$(SRCDIR)/mkdiff $(PUREDIR) $(BUILD) $(SRCDIR)/$(DIFF).tmp
	$(Q)$(SRCDIR)/stripdate.pl < $(SRCDIR)/$(DIFF).tmp > $(SRCDIR)/$(DIFF)
	$(Q)rm -rf original $(SRCDIR)/$(DIFF).tmp

.PHONY: generate_makefile prepare_source mkdiff
