#* ====================================================================
#* Copyright (c) 2002, The Regents of the University of California.
#*
#* The Regents of the University of California MAKE NO REPRESENTATIONS OR
#* WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR
#* IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
#* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
#* NON-INFRINGEMENT. The Regents of the University of California SHALL
#* NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
#* USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
#* ====================================================================

VERSION_NUM = 3.5.0.1515
VERSION = $(VERSION_NUM)-`date +%Y%m%d%H%M%S`

#apache_dir = /service/httpd
apache_dir = /user/service/httpd

pgsql_dir = /user/db/pgsql
pgsql_include = -I$(pgsql_dir)/include
pgsql_lib = -L$(pgsql_dir)/lib

mcrypt_include = -I/usr/local/include
mcrypt_lib = -L/usr/local/lib

libdir = $(pgsql_dir)/lib

CC = gcc

SHELL = /bin/sh
#LIBTOOL = $(SHELL) $(abs_builddir)/libtool
LIBTOOL = $(SHELL) $(apache_dir)/build/libtool
LTFLAGS = --silent
LT_LDFLAGS =
APACHE_TARGET =

#DEFINES
## Debug Compile Options : gmake DEBUG=all or basic or auth or filter
ifeq ($(DEBUG), basic)
DEBUG_DEFS= -D__OPENDAV_DEBUG__
endif 
## Debug Compile Options
ifeq ($(DEBUG), auth)
DEBUG_DEFS= -D__OPENDAV_DEBUG__\
-D__OPENDAV_DEBUG_AUTH__\
-D__OPENDAV_DEBUG_USER_AUTH__\
-D__OPENDAV_OLDAUTH_LOG__
endif 
ifeq ($(DEBUG), filter)
DEBUG_DEFS= -D__OPENDAV_DEBUG__\
-D__DEBUG_CORE_FILTER__\
-D__OPENDAV_DEBUG_TRAFFIC_CONTROL__
endif 
ifeq ($(DEBUG), all)
DEBUG_DEFS= -D__OPENDAV_DEBUG__\
-D__OPENDAV_DEBUG_SHARED__\
-D__OPENDAV_DEBUG_AUTH__\
-D__OPENDAV_DEBUG_USER_AUTH__\
-D__DEBUG_CORE_FILTER__\
-D__OPENDAV_DEBUG_TRAFFIC_CONTROL__
endif 

## Add Compile Options : gmake USE_FN=Namespace 
ifeq ($(USE_FN), Namespace)
ADD_DEFS= -D__USE_NAMESPACE__
endif

## Basic
DEFS=-DVERSION=\"$(VERSION)\" $(DEBUG_DEFS) $(ADD_DEFS)\
-D__USE_TRANSFER_LOG__ -D__OPENDAV_BAND_CONTROL__\
-D__ONLY_GET_SUCCESS_OUT__ -D__OPENDAV_TRANSFER_LOG_ANONYMOUS__\
-D__USE_MULTIPLE_STORAGE__\
-D__UNUSE_FILELOCK__\
-D__NOT_USE_LOCKDB__\
-D__PROPFIND_RANDOM_FILE__\
-D__CLOUD_STREAMING__\
#-D__USE_OLD_AUTH__
#-D__NOT_USE_AUTH_TIMESLICE__
#-D__OPENDAV_USER_AUTH_GET
#-D__NOT_USE_LOCKDB__
#-D__OPENDAV_OLDAUTH_LOG__
#-D__OPENDAV_SHARED_NOT_USE
#-D__OPENDISK_SOLUTION__ -D__OPENDISK_SOLUTION_NOT_USE_TS__
#-D__PROPFIND_RANDOM_FILE__
#-D__PROPFIND_RANDOM_DIR__

## Softline Compile Options : gmake Softline=yes (must gmake clean)
ifeq ($(Softline), yes)
DEFS=-DVERSION=\"$(VERSION)\" $(DEBUG_DEFS) $(ADD_DEFS)\
-D__USE_TRANSFER_LOG__ -D__OPENDAV_BAND_CONTROL__\
-D__ONLY_GET_SUCCESS_OUT__ -D__OPENDAV_TRANSFER_LOG_ANONYMOUS__\
-D__USE_MULTIPLE_STORAGE__\
-D__UNUSE_FILELOCK__\
-D__NOT_USE_LOCKDB__\
-D__PROPFIND_RANDOM_FILE__\
-D__USE_AUTH_SOFTLINE_ONLY__\
-D__USE_AUTH_SOFTLINE_ONLY_UPLOAD_END_SEND_
endif


## FreeBSD 12.x optimizer use -O0 , FreeBSD 10.x, 6.x use -O2 (#33319)

FB_MAIN_VERSION = $(shell uname -r | cut -c1-2 | bc)
ifeq ($(FB_MAIN_VERSION),12)
CFLAGS = -g -O0 -Wall -D_GNU_SOURCE
else
CFLAGS = -g -O2 -Wall -D_GNU_SOURCE
endif

#CFLAGS = -g -O2 -Wall -D_GNU_SOURCE
#CPPFLAGS = -DLINUX=2 -D_REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE


GCC_VER_GTE46 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.6 | sed -e 's/\./*100+/g' | bc )
ifeq ($(GCC_VER_GTE46),1)
## GCC 4.6
LIBS = -lmcrypt
else
## GCC 3.X
LIBS = -lmcrypt -liconv
endif

LDFLAGS = $(pgsql_lib) $(mcrypt_lib) #-ldevstat -lgeom
INCLUDES = $(pgsql_include) $(mcrypt_include)
HEADFILES =  dav_repos.h dbms.h util.h search.h lock.h 

COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES)

LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(LT_LDFLAGS) $(COMPILE) -rpath $(libdir) $(LDFLAGS)

APACHE_INCLUDES =  -I$(apache_dir)/include

COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) $(DEFS) -o $@ -c $<

apache-mod-dav-dbms: libmod_dav_repos.la

# build these special -- use APACHE_INCLUDES


libmod_dav_repos_DEPS = main.lo auth.lo repos.lo props.lo search.lo dbms.lo util.lo lock.lo share_common.lo share_account.lo share_statistic.lo share_anonymous.lo share_fhs_stat.lo inout_filter.lo transfer.lo disk.lo
libmod_dav_repos_OBJECTS = main.lo auth.lo repos.lo props.lo search.lo dbms.lo util.lo lock.lo share_common.lo share_account.lo share_statistic.lo share_anonymous.lo share_fhs_stat.lo inout_filter.lo transfer.lo disk.lo

libmod_dav_repos.la: $(libmod_dav_repos_DEPS)
	$(LINK) -o libmod_dav_repos.la -avoid-version $(libmod_dav_repos_OBJECTS) $(LIBS)

main.lo: main.c $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

auth.lo: auth.c $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

inout_filter.lo: inout_filter.c  $(HEADFILES) Makefile inout_filter.h
	$(COMPILE_APACHE_MOD)

repos.lo: repos.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

props.lo: props.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

lock.lo: lock.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

share_common.lo: share_common.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

share_account.lo:  share_account.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

share_statistic.lo:  share_statistic.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

share_anonymous.lo: share_anonymous.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

share_fhs_stat.lo: share_fhs_stat.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)
	
search.lo: search.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

dbms.lo: dbms.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

util.lo: util.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

transfer.lo: transfer.c  $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

disk.lo: disk.c $(HEADFILES) Makefile
	$(COMPILE_APACHE_MOD)

clean:
	rm -rf *.slo *.la *.o *.lo .libs test *~

DISTS =	buildconf.sh Makefile.in README configure  data.sql dbms.c \
	util.c main.c auth.c repos.c table.sql\
	configure.in props.c search.c lock.c listener.c share.c \
	transfer.c dbpool.c TODO  $(HEADFILES)
#
gindent:
	gindent -i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1 *.[ch]
