Home | History | Annotate | Download | only in csharp
      1 #!/bin/bash
      2 # Generates C# source files from .proto files.
      3 # You first need to make sure protoc has been built (see instructions on
      4 # building protoc in root of this repository)
      5 
      6 set -ex
      7 
      8 # cd to repository root
      9 pushd $(dirname $0)/..
     10 
     11 # Protocol buffer compiler to use. If the PROTOC variable is set,
     12 # use that. Otherwise, probe for expected locations under both
     13 # Windows and Unix.
     14 if [ -z "$PROTOC" ]; then
     15   # TODO(jonskeet): Use an array and a for loop instead?
     16   if [ -x cmake/build/Debug/protoc.exe ]; then
     17     PROTOC=cmake/build/Debug/protoc.exe
     18   elif [ -x cmake/build/Release/protoc.exe ]; then
     19     PROTOC=cmake/build/Release/protoc.exe
     20   elif [ -x src/protoc ]; then
     21     PROTOC=src/protoc
     22   else
     23     echo "Unable to find protocol buffer compiler."
     24     exit 1
     25   fi
     26 fi
     27 
     28 # descriptor.proto and well-known types
     29 $PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf \
     30     --csharp_opt=base_namespace=Google.Protobuf \
     31     src/google/protobuf/descriptor.proto \
     32     src/google/protobuf/any.proto \
     33     src/google/protobuf/api.proto \
     34     src/google/protobuf/duration.proto \
     35     src/google/protobuf/empty.proto \
     36     src/google/protobuf/field_mask.proto \
     37     src/google/protobuf/source_context.proto \
     38     src/google/protobuf/struct.proto \
     39     src/google/protobuf/timestamp.proto \
     40     src/google/protobuf/type.proto \
     41     src/google/protobuf/wrappers.proto
     42 
     43 # Test protos where the namespace matches the target location
     44 $PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf.Test \
     45     --csharp_opt=base_namespace=Google.Protobuf \
     46     src/google/protobuf/map_unittest_proto3.proto \
     47     src/google/protobuf/unittest_proto3.proto \
     48     src/google/protobuf/unittest_import_proto3.proto \
     49     src/google/protobuf/unittest_import_public_proto3.proto \
     50     src/google/protobuf/unittest_well_known_types.proto
     51 
     52 # Different base namespace to the protos above
     53 $PROTOC -Icsharp/protos --csharp_out=csharp/src/Google.Protobuf.Test \
     54     --csharp_opt=base_namespace=UnitTest.Issues \
     55     csharp/protos/unittest_issues.proto
     56 
     57 # AddressBook sample protos
     58 $PROTOC -Iexamples --csharp_out=csharp/src/AddressBook \
     59     examples/addressbook.proto
     60 
     61 $PROTOC -Iconformance -Isrc --csharp_out=csharp/src/Google.Protobuf.Conformance \
     62     conformance/conformance.proto
     63