/*
 * svn_private_config.hw : Template for svn_private_config.h on Win32.
 *
 * ====================================================================
 * Copyright (c) 2000-2003 CollabNet.  All rights reserved.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution.  The terms
 * are also available at http://subversion.tigris.org/license-1.html.
 * If newer versions of this license are posted there, you may use a
 * newer version instead, at your option.
 *
 * This software consists of voluntary contributions made by many
 * individuals.  For exact contribution history, see the revision
 * history and logs, available at http://subversion.tigris.org/.
 * ====================================================================
 */

/* ==================================================================== */




#ifndef CONFIG_HW
#define CONFIG_HW

/* Signal that we're compiling Win32. Some bits might need this. */
#define SVN_WIN32 1

/* The version of Berkely DB we want */
#define SVN_FS_WANT_DB_MAJOR	4
#define SVN_FS_WANT_DB_MINOR	0
#define SVN_FS_WANT_DB_PATCH	14


/* Path separator for local filesystem */
#define SVN_PATH_LOCAL_SEPARATOR '\\'

/* Name of system's null device */
#define SVN_NULL_DEVICE_NAME "nul"

/* Link local repos access library to client */
#define SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL

/* Link DAV repos access library to client */
#define SVN_LIBSVN_CLIENT_LINKS_RA_DAV

/* Link pipe repos access library to client */
#define SVN_LIBSVN_CLIENT_LINKS_RA_SVN

#endif /* CONFIG_HW */
