#
# The contents of this file are subject to the AOLserver Public License
# Version 1.1 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://aolserver.com.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU General Public License (the "GPL"), in which case the
# provisions of GPL are applicable instead of those above.  If you wish
# to allow use of your version of this file only under the terms of the
# GPL and not to allow others to use your version of this file under the
# License, indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by the GPL.
# If you do not delete the provisions above, a recipient may use your
# version of this file under either the License or the GPL.
#
# Copyright (C) 2001-2003 Scott S. Goodwin
#
# $Header: /cvsroot/aolserver/nsopenssl/Makefile,v 1.43 2004/04/14 01:07:54 scottg Exp $
#

# XXX AOLserver 3.x defines this, but AOLserver 4.x uses the install binary
# XXX instead. We'll need to update all the modules to use install
CP = /bin/cp -fp

ifdef INST
NSHOME ?= $(INST)
else
NSHOME ?= ../aolserver
endif

#
# Version number used in release tags. Valid VERs are "1.1c", "2.1", 
# "2.2beta7". VER "1.1c" will be translated into "v1_1c" by this Makefile.
#
VER_ = $(subst .,_,$(VER))

MODNAME  = nsopenssl

LIB      = nsopenssl
LIBOBJS  = sslcontext.o ssl.o tclcmds.o x509.o
LIBLIBS  = -L$(OPENSSL)/lib -lssl -lcrypto 

MOD      = nsopenssl.so
OBJS     = nsopenssl.o
HDRS     = nsopenssl.h
MODLIBS  = -L$(OPENSSL)/lib -lssl -lcrypto

TCLMOD   = https.tcl

# XXX take out the -g for production
CFLAGS += -g

#
# Extra libraries required by your module (-L and -l go here)
#

# Add static compilation ability, per grax3272
#MODLIBS  =  -L$(OPENSSL)/lib ../openssl-0.9.6g/libssl.a ../openssl-0.9.6g/libcrypto.a#-lssl -lcrypto

#
# Compiler flags required by your module (-I for external headers goes here).
#
# Kerberos headers are included in case your OpenSSL library was built with
# Kerberos support. This is generally true on RedHat 9 and possibly Fedora
# Core. If OPENSSL_NO_KRB5 is define in <openssl/opensslconf.h> then OpenSSL
# *was not* compiled with Kerberos support.
#

CFLAGS   += -I$(OPENSSL)/include -I/usr/kerberos/include

#
# The common Makefile defined by AOLserver for making modules
#
include  $(NSHOME)/include/Makefile.module

#
# Help the poor developer
#
help:
	@echo "**" 
	@echo "** DEVELOPER HELP FOR THIS $(MODNAME)"
	@echo "**"
	@echo "** make tag VER=X.Y"
	@echo "**     Tags the module CVS code with the given tag."
	@echo "**     You can tag the CVS copy at any time, but follow the rules."
	@echo "**     VER must be of the form:"
	@echo "**         X.Y"
	@echo "**         X.YbetaN"
	@echo "**     You should browse CVS at SF to find the latest tag."
	@echo "**"
	@echo "** make file-release VER=X.Y"
	@echo "**     Checks out the code for the given tag from CVS."
	@echo "**     The result will be a releaseable tar.gz file of"
	@echo "**     the form: module-X.Y.tar.gz."
	@echo "**"

#
# Tag the code in CVS right now
#
tag:
	@if [ "$$VER" = "" ]; then echo 1>&2 "VER must be set to version number!"; exit 1; fi
	cvs rtag v$(VER_) $(MODNAME)

#
# Create a distribution file release
#
file-release:
	@if [ "$$VER" = "" ]; then echo 1>&2 "VER must be set to version number!"; exit 1; fi
	/bin/rm -rf /tmp/file-release
	/bin/mkdir /tmp/file-release
	echo "(Just hit the return key when prompted for CVS password)"
	cvs -d :pserver:anonymous@cvs.aolserver.sourceforge.net:/cvsroot/aolserver login
	(cd /tmp/file-release && cvs -d :pserver:anonymous@cvs.aolserver.sourceforge.net:/cvsroot/aolserver co -r v$(VER_) $(MODNAME))
	mv /tmp/file-release/$(MODNAME) /tmp/file-release/$(MODNAME)-$(VER)
	(cd /tmp/file-release && tar czf $(MODNAME)-$(VER).tar.gz $(MODNAME)-$(VER))
	/bin/mv /tmp/file-release/$(MODNAME)-$(VER).tar.gz /tmp
	rm -rf /tmp/file-release
	echo "--- FILE RELEASE is: /tmp/$(MODNAME)-$(VER).tar.gz"

# XXX alter this to work with sed or tcl instead of perl
# perl -pi -e 's/\@VER\@/$(VER)/g' work/nscache/index.html work/nscache/tclcache.c

#
# Check to see that the OPENSSL variable has been set
#
.PHONY: check-env
nsopenssl.h: check-env
check-env:
	@if [ "$(OPENSSL)" = "" ]; then \
	    echo "** "; \
	    echo "** OPENSSL variable not set."; \
	    echo "** nsopenssl.so will not be built."; \
	    echo "** Usage: make OPENSSL=/path/to/openssl"; \
	    echo "** Usage: make install OPENSSL=/path/to/openssl INST=/path/to/aolserver"; \
	    echo "** "; \
	    exit 1; \
	fi

#
# This overrides the install directive in $(NSHOME)/include/Makefile.module because we
# have a Tcl module (https.tcl) to install as well.
#
install: all
	$(RM) $(INSTBIN)/$(MOD)
	$(CP) $(MOD) $(INSTBIN)
	$(MKDIR) $(INSTTCL)
	$(CP) $(TCLMOD) $(INSTTCL)

## NOTES #################################################################################

# Solaris users *might* need the following, 
# but you'll need to modify it to point to where 
# your libgcc.a lives. Replace the MODLIBS above with
# this:
#
#   MODLIBS  =  -L$(OPENSSL)/lib -lssl -lcrypto \
#   -L/usr/local/products/gcc-2.95/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95 -lgcc


# For development purposes, put the GCCOPT above somewhere
# to turn off 'no-unused' so gcc will report unused funcs
# and variables.
#
#   GCCOPT       =   $(GCCOPTIMIZE) -fPIC -Wall

