summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2009-07-09 11:10:16 -0700
committerJoshua Haberman <joshua@reverberate.org>2009-07-09 11:10:16 -0700
commit4d9c39b94d498e8a3ad2fb4966833092579ed038 (patch)
tree3cb44dae55cd4da6ff0f9b6e0644b0d0e9e3e803
parent9bc15a1e74623753bcce0404e9cbd67f56a5e0e1 (diff)
Make benchmark run out-of-the-box.
-rw-r--r--Makefile13
-rw-r--r--benchmark/benchmark.cc6
-rw-r--r--src/upb_context.c2
-rw-r--r--src/upb_parse.h2
4 files changed, 14 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index e79630b..f08c846 100644
--- a/Makefile
+++ b/Makefile
@@ -3,10 +3,11 @@
CC=gcc
CXX=g++
CFLAGS=-std=c99
-CPPFLAGS=-O3 -Wall -Wextra -pedantic -g -DUPB_UNALIGNED_READS_OK -fomit-frame-pointer -Idescriptor -Isrc
+CPPFLAGS=-O3 -Wall -Wextra -pedantic -g -DUPB_UNALIGNED_READS_OK -fomit-frame-pointer -Idescriptor -Isrc -Itests
OBJ=src/upb_parse.o src/upb_table.o src/upb_msg.o src/upb_enum.o src/upb_context.o \
src/upb_string.o descriptor/descriptor.o
-ALL=$(OBJ) src/libupb.a tests/test_table tests/tests tools/upbc
+SRC=src/*.c src/*.h descriptor/*.c descriptor/*.h tests/*.c tests/*.h tools/*.c tools/*.h
+ALL=$(OBJ) src/libupb.a tests/test_table tests/tests tools/upbc benchmark/benchmark
all: $(ALL)
clean:
rm -f $(ALL) deps
@@ -15,8 +16,10 @@ src/libupb.a: $(OBJ)
ar rcs src/libupb.a $(OBJ)
tests/test_table: src/libupb.a
tools/upbc: src/libupb.a
-benchmark/benchmark: src/libupb.a -lm
+benchmark/benchmark: src/libupb.a benchmark/google_messages.pb.h -lm
+benchmark/google_messages.pb.h benchmark/google_messages.pb: benchmark/google_messages.proto
+ protoc benchmark/google_messages.proto --cpp_out=. -obenchmark/google_messages.proto.pb
-include deps
-deps: src/*.c src/*.h descriptor/*.c descriptor/*.h tests/*.c tests/*.h tools/*.c tools/*.h
- gcc -MM *.c > deps
+deps: $(SRC)
+ gcc -MM $(SRC) > deps
diff --git a/benchmark/benchmark.cc b/benchmark/benchmark.cc
index 05184bc..a91c716 100644
--- a/benchmark/benchmark.cc
+++ b/benchmark/benchmark.cc
@@ -1,6 +1,6 @@
#include <time.h>
-#include "google_speed.pb.h"
+#include "google_messages.pb.h"
#include "test_util.h"
#include "upb_context.h"
#include "upb_msg.h"
@@ -10,7 +10,7 @@ int main ()
struct upb_context c;
upb_context_init(&c);
struct upb_string fds;
- if(!upb_strreadfile("google_messages.proto.bin", &fds)) {
+ if(!upb_strreadfile("benchmark/google_messages.proto.pb", &fds)) {
fprintf(stderr, "Couldn't read google_speed.proto.bin.\n");
return 1;
}
@@ -36,7 +36,7 @@ int main ()
upb_msg_parse_init(&s, data, m, false, true);
size_t read;
struct upb_string str;
- if(!upb_strreadfile("google_message2.dat", &str)) {
+ if(!upb_strreadfile("benchmark/google_message2.dat", &str)) {
fprintf(stderr, "Error reading google_message2.dat\n");
return 1;
}
diff --git a/src/upb_context.c b/src/upb_context.c
index 8a9f014..76319cd 100644
--- a/src/upb_context.c
+++ b/src/upb_context.c
@@ -272,7 +272,7 @@ bool upb_context_addfd(struct upb_context *c,
bool upb_context_parsefds(struct upb_context *c, struct upb_string *fds_str) {
google_protobuf_FileDescriptorSet *fds =
- upb_alloc_and_parse(c->fds_msg, fds_str, true);
+ upb_alloc_and_parse(c->fds_msg, fds_str, false);
if(!fds) return false;
if(fds->set_flags.has.file) {
diff --git a/src/upb_parse.h b/src/upb_parse.h
index d9db85c..4600c04 100644
--- a/src/upb_parse.h
+++ b/src/upb_parse.h
@@ -104,7 +104,9 @@ typedef void (*upb_submsg_end_cb)(struct upb_parse_state *s);
* where user_data has as many bytes allocated as specified when initialized. */
struct upb_parse_stack_frame {
size_t end_offset; /* 0 indicates that this is a group. */
+#ifndef __cplusplus /* Temporary hack since C++ doesn't support flex arrays. */
char user_data[];
+#endif
};
struct upb_parse_state {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback