### Very short install notes for OpenSUSE (tested on OpenSUSE 11.3)
# Please refer to other INSTALL files for more detailed instructions (e.g. extension-specific notes).


Dependencies on OpenSUSE 11.3 (from minimal server system installation):
# zypper install cmake make gcc gcc-c++ flex bison lksctp-tools-devel libgnutls-devel libgcrypt-devel libidn-devel
# zypper install mercurial

Following dependencies are optional, depending on which extensions you plan to compile
 app_acct:
	# zypper install postgresql-server postgresql-devel

 app_sip:
 app_diameap:
 	# zypper install libmysqlclient-devel 
	(would also need a server, not sure which package is appropriate)
	
 dict_legacy_xml:
	# zypper install libxml2 libxml2-devel
	
 dbg_interactive:
	# zypper install swig python-devel

 sample:
	# zypper install gcc-c++

There is currently no OpenSUSE-specific package for freeDiameter.
You are welcome to contribute packaging scripts! Please contact with
dev@freediameter.net for more details.
