diff --git a/scripts/build_xhpast.sh b/scripts/build_xhpast.sh index e3d3972..bd31609 100755 --- a/scripts/build_xhpast.sh +++ b/scripts/build_xhpast.sh @@ -1,27 +1,29 @@ #!/bin/sh set -e ROOT=`dirname $0`"/../support/xhpast" echo echo "Building XHPAST..." echo cd $ROOT make clean all install echo echo "Testing xhpast works" echo if ! ./xhpast --version then echo echo >&2 "xhpast is broken :(" + echo >&2 "Maybe try `STATIC=1 ./build_xhpast.sh` if the error" + echo >&2 "is linker-related?" echo exit 2 fi echo echo "Build successful!" echo diff --git a/support/xhpast/Makefile b/support/xhpast/Makefile index fbd107b..83b22c8 100755 --- a/support/xhpast/Makefile +++ b/support/xhpast/Makefile @@ -1,60 +1,61 @@ ifdef DEBUG CPPFLAGS = -fPIC -ggdb -Wall -DDEBUG else CPPFLAGS = -fPIC -g -Wall -O3 -minline-all-stringops endif ifdef PROFILE CPPFLAGS += -pg endif -# See T953 +ifdef STATIC CPPFLAGS += -static +endif ROOT = ../../src/parser/xhpast all: xhpast clean: -rm xhpast parser.yacc.output libxhpast.a *.o 2>/dev/null cleanall: clean -rm scanner.lex.cpp scanner.lex.hpp parser.yacc.cpp parser.yacc.hpp install: xhpast cp xhpast $(ROOT)/bin/xhpast scanner: scanner.l ./find_flex.sh >/dev/null && \ `./find_flex.sh` -C --header-file=scanner.lex.hpp -o scanner.lex.cpp -d $< echo '/* @gen''er''ated */' >> scanner.lex.cpp echo '/* @gen''er''ated */' >> scanner.lex.hpp parser: parser.y bison --debug --verbose -d -o parser.yacc.cpp $< echo '/* @gen''er''ated */' >> parser.yacc.cpp echo '/* @gen''er''ated */' >> parser.yacc.hpp node_names.hpp: generate_nodes.php php -f generate_nodes.php cp parser_nodes.php $(ROOT)/constants/ %.o: %.cpp $(CXX) -c $(CPPFLAGS) -o $@ $< needparserscanner: @([ -e parser.yacc.hpp ] && [ -e parser.yacc.cpp ] && \ [ -e scanner.lex.hpp ] && [ -e scanner.lex.cpp ]) \ || (echo "Run 'make parser scanner' first.'" && exit 1) parser.yacc.o: needparserscanner scanner.lex.hpp scanner.lex.o: needparserscanner parser.yacc.hpp node_names.hpp libxhpast.a: astnode.o scanner.lex.o parser.yacc.o $(AR) -crs $@ $^ xhpast: xhpast.cpp libxhpast.a $(CXX) $(CPPFLAGS) -o $@ $^ .PHONY: all clean