#############################################################################
#                                  _   _ ____  _     
#  Project                     ___| | | |  _ \| |    
#                             / __| | | | |_) | |    
#                            | (__| |_| |  _ <| |___ 
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# In order to be useful for every potential user, curl and libcurl are
# dual-licensed under the MPL and the MIT/X-derivate licenses.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the MPL or the MIT/X-derivate
# licenses. You may pick one of these licenses.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# $Id$
#############################################################################

all:
	./configure
	make

ssl:
	./configure --with-ssl
	make

borland:
	cd lib & make -f Makefile.b32
	cd src & make -f Makefile.b32

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 cfg=release
	cd ..\src
	nmake -f Makefile.vc6

vc-ssl:
	cd lib
	nmake -f Makefile.vc6 cfg=release-ssl
	cd ..\src
	nmake -f Makefile.vc6 cfg=release-ssl

vc-ssl-dll:
	cd lib
	nmake -f Makefile.vc6 cfg=release-ssl-dll
	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
