############################################################################
#                                  _   _ ____  _     
#  Project                     ___| | | |  _ \| |    
#                             / __| | | | |_) | |    
#                            | (__| |_| |  _ <| |___ 
#                             \___|\___/|_| \_\_____|
#
#  The contents of this file are subject to the Mozilla Public License
#  Version 1.0 (the "License"); you may not use this file except in
#  compliance with the License. You may obtain a copy of the License at
#  http://www.mozilla.org/MPL/
#
#  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.
#
#  The Original Code is Curl.
#
#  The Initial Developer of the Original Code is Daniel Stenberg.
#
#  Portions created by the Initial Developer are Copyright (C) 1999.
#  All Rights Reserved.
#
# ------------------------------------------------------------
# Main author:
# - Daniel Stenberg <Daniel.Stenberg@haxx.nu>
#
# 	http://curl.haxx.nu
#
# $Source$
# $Revision$
# $Date$
# $Author$
# $State$
# $Locker$
#
# ------------------------------------------------------------
#
# In a normal unix-setup, this file will become overwritten.
#
############################################################################

all:
	./configure
	make

ssl:
	./configure --with-ssl
	make

mingw32:
	cd lib; make -f Makefile.m32
	cd src; make -f Makefile.m32

mingw32-ssl:
	cd lib; make -f Makefile.m32 SSL=1
	cd src; make -f Makefile.m32 SSL=1

vc:
	cd lib; nmake -f Makefile.vc6
	cd src; nmake -f Makefile.vc6

cygwin:
	./configure
	make

cygwin-ssl:
	./configure --with-ssl
	make

unix: all

unix-ssl: ssl

linux: all

linux-ssl: ssl
