diff options
author | Joshua Haberman <joshua@reverberate.org> | 2011-02-27 13:55:47 -0800 |
---|---|---|
committer | Joshua Haberman <joshua@reverberate.org> | 2011-02-27 13:55:47 -0800 |
commit | 26264c25a5d22865ab459ef26f86f7d8dfe88f1e (patch) | |
tree | 3125eebd9ff1bc75f75f9940e9dfbbb2929c9247 | |
parent | 6f6a2937bfcb69a1ba74e8b5736c34ca915c4863 (diff) |
Don't require NASM to build unless using the x64 decoder.
-rw-r--r-- | Makefile | 14 | ||||
-rw-r--r-- | src/upb_decoder.c | 5 |
2 files changed, 13 insertions, 6 deletions
@@ -24,12 +24,14 @@ # Default rule: just build libupb. all: lib +# User-specified CFLAGS. +USER_CFLAGS=$(strip $(shell test -f perf-cppflags && cat perf-cppflags)) + # Basic compiler/flag setup. CC=gcc CXX=g++ CFLAGS=-std=c99 INCLUDE=-Isrc -Itests -I. -USER_CFLAGS=$(strip $(shell test -f perf-cppflags && cat perf-cppflags)) CPPFLAGS=$(INCLUDE) -Wall -Wextra -Wno-missing-field-initializers $(USER_CFLAGS) LDLIBS=-lpthread src/libupb.a @@ -117,8 +119,14 @@ LIBUPB=src/libupb.a LIBUPB_PIC=src/libupb_pic.a lib: $(LIBUPB) -OBJ=$(patsubst %.c,%.o,$(SRC)) src/upb_decoder_x64.o -PICOBJ=$(patsubst %.c,%.lo,$(SRC)) src/upb_decoder_x64.lo + +OBJ=$(patsubst %.c,%.o,$(SRC)) +PICOBJ=$(patsubst %.c,%.lo,$(SRC)) + +ifneq (, $(findstring DUSE_X64_FASTPATH, $(USER_CFLAGS))) + OBJ += src/upb_decoder_x64.o + PICOBJ += src/upb_decoder_x64.o +endif $(LIBUPB): $(OBJ) $(E) AR $(LIBUPB) $(Q) ar rcs $(LIBUPB) $(OBJ) diff --git a/src/upb_decoder.c b/src/upb_decoder.c index f028297..dc5dafd 100644 --- a/src/upb_decoder.c +++ b/src/upb_decoder.c @@ -248,14 +248,13 @@ void upb_decoder_run(upb_src *src, upb_status *status) { // Decodes as many fields as possible, updating d->ptr appropriately, // before falling through to the slow(er) path. -#ifdef USE_ASSEMBLY_FASTPATH +#ifdef USE_X64_FASTPATH const char *end = UPB_MIN(d->end, d->submsg_end); fastdecode_ret ret = upb_fastdecode(d->ptr, end, d->dispatcher.top->handlers.set->value, d->dispatcher.top->handlers.closure, d->msgdef->itof.array, - d->msgdef->itof.array_size, - d->tmp); + d->msgdef->itof.array_size); CHECK_FLOW(ret.flow); #endif |