Browse Source

Patch from Miguel de Icaza: This introduces auto-detection of Mono to configure, and if found, builds and installs the runtime library, and provides a pkg-config file so developers can easily use it on Unix.

Jon Skeet 17 years ago
parent
commit
de21d2c92c

+ 4 - 0
Makefile.am

@@ -2,7 +2,11 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
+if MONO
+SUBDIRS = src csharp
+else
 SUBDIRS = src
+endif
 
 EXTRA_DIST =                                                                 \
   autogen.sh                                                                 \

+ 6 - 1
configure.ac

@@ -23,6 +23,11 @@ AM_CONDITIONAL(GCC, test "$GCC" = yes)   # let the Makefile know if we're gcc
 AC_HEADER_STDC
 AC_CHECK_HEADERS([fcntl.h inttypes.h limits.h stdlib.h unistd.h])
 
+if pkg-config --atleast-version=1.9 mono; then
+   with_mono=yes
+fi
+AM_CONDITIONAL(MONO, test x$with_mono = xyes)
+
 # Checks for library functions.
 AC_FUNC_MEMCMP
 AC_FUNC_STRTOD
@@ -31,4 +36,4 @@ AC_CHECK_FUNCS([ftruncate memset mkdir strchr strerror strtol])
 ACX_PTHREAD
 AC_CXX_STL_HASH
 
-AC_OUTPUT( Makefile src/Makefile )
+AC_OUTPUT( Makefile src/Makefile csharp/Makefile )

BIN
csharp/Google.ProtocolBuffers.pub


+ 54 - 0
csharp/Makefile.am

@@ -0,0 +1,54 @@
+pkgconfigdir = $(libdir)/pkgconfig
+
+pkgconfig_DATA = google-pb.pc
+
+noinst_SCRIPTS = Google.ProtocolBuffers.dll
+
+Google.ProtocolBuffers.dll_sources = \
+	$(srcdir)/ProtocolBuffers/AbstractBuilder.cs			\
+	$(srcdir)/ProtocolBuffers/AbstractMessage.cs			\
+	$(srcdir)/ProtocolBuffers/Autogenerated.cs			\
+	$(srcdir)/ProtocolBuffers/ByteString.cs				\
+	$(srcdir)/ProtocolBuffers/CodedInputStream.cs			\
+	$(srcdir)/ProtocolBuffers/CodedOutputStream.cs			\
+	$(srcdir)/ProtocolBuffers/Collections/Dictionaries.cs		\
+	$(srcdir)/ProtocolBuffers/Collections/Lists.cs			\
+	$(srcdir)/ProtocolBuffers/Collections/ReadOnlyDictionary.cs	\
+	$(srcdir)/ProtocolBuffers/Descriptors/EnumDescriptor.cs		\
+	$(srcdir)/ProtocolBuffers/Descriptors/EnumValueDescriptor.cs	\
+	$(srcdir)/ProtocolBuffers/Descriptors/FieldDescriptor.cs	\
+	$(srcdir)/ProtocolBuffers/Descriptors/FieldMappingAttribute.cs	\
+	$(srcdir)/ProtocolBuffers/Descriptors/FieldType.cs		\
+	$(srcdir)/ProtocolBuffers/Descriptors/FileDescriptor.cs		\
+	$(srcdir)/ProtocolBuffers/Descriptors/MappedType.cs		\
+	$(srcdir)/ProtocolBuffers/Descriptors/MessageDescriptor.cs	\
+	$(srcdir)/ProtocolBuffers/ExtensionInfo.cs			\
+	$(srcdir)/ProtocolBuffers/ExtensionRegistry.cs			\
+	$(srcdir)/ProtocolBuffers/FieldAccess/Delegates.cs		\
+	$(srcdir)/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs	\
+	$(srcdir)/ProtocolBuffers/FieldAccess/IFieldAccessor.cs		\
+	$(srcdir)/ProtocolBuffers/FieldSet.cs				\
+	$(srcdir)/ProtocolBuffers/GeneratedBuilder.cs			\
+	$(srcdir)/ProtocolBuffers/GeneratedExtension.cs			\
+	$(srcdir)/ProtocolBuffers/GeneratedMessage.cs			\
+	$(srcdir)/ProtocolBuffers/IBuilder.cs				\
+	$(srcdir)/ProtocolBuffers/IMessage.cs				\
+	$(srcdir)/ProtocolBuffers/InvalidProtocolBufferException.cs	\
+	$(srcdir)/ProtocolBuffers/Properties/AssemblyInfo.cs		\
+	$(srcdir)/ProtocolBuffers/TextFormat.cs				\
+	$(srcdir)/ProtocolBuffers/UninitializedMessageException.cs	\
+	$(srcdir)/ProtocolBuffers/UnknownField.cs			\
+	$(srcdir)/ProtocolBuffers/UnknownFieldSet.cs			\
+	$(srcdir)/ProtocolBuffers/WireFormat.cs
+
+Google.ProtocolBuffers.dll: $(Google.ProtocolBuffers.dll_sources)
+	cp $(srcdir)/ProtocolBuffers/Properties/Google.ProtocolBuffers.snk .
+	gmcs -codepage:utf8 -debug -target:library -out:Google.ProtocolBuffers.dll $(Google.ProtocolBuffers.dll_sources) 
+
+install-data-local: Google.ProtocolBuffers.dll
+	gacutil -i Google.ProtocolBuffers.dll -package google
+
+EXTRA_DIST = $(Google.ProtocolBuffers.dll_sources) google-pb.pc.in
+
+google-pb.pc: Makefile.am google-pb.pc.in
+	sed "s,@PREFIX@,${prefix}," < $(srcdir)/google-pb.pc.in > google-pb.pc

+ 1 - 1
csharp/ProtocolBuffers/Properties/AssemblyInfo.cs

@@ -13,7 +13,7 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyCopyright("Copyright ©  2008")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
-
+[assembly: AssemblyKeyFile ("Google.ProtocolBuffers.snk")]
 // Setting ComVisible to false makes the types in this assembly not visible 
 // to COM components.  If you need to access a type in this assembly from 
 // COM, set the ComVisible attribute to true on that type.

BIN
csharp/ProtocolBuffers/Properties/Google.ProtocolBuffers.snk


+ 7 - 0
csharp/google-pb.pc.in

@@ -0,0 +1,7 @@
+assemblies_dir=@PREFIX@
+Libraries=${assemblies_dir}/gac/Google.ProtocolBuffers/1.0.0.0__17b3b1f090c3ea48/Google.ProtocolBuffers.dll
+
+Name: Google Protocol Buffers for C#
+Description: Google Protocol Buffers for C#
+Version: 1.0.0.0
+Libs: -r:${assemblies_dir}/gac/Google.ProtocolBuffers/1.0.0.0__17b3b1f090c3ea48/Google.ProtocolBuffers.dll