From 86b00778e384caa8c22b2fb2917182bff58475df Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Thu, 11 Jul 2013 16:00:06 -0700 Subject: [PATCH] Add skeleton.sh script for making extension skeletons from idl.json files --- hphp/idl/Makefile | 97 -------------------------------- hphp/tools/bootstrap/skeleton.sh | 42 ++++++++++++++ 2 files changed, 42 insertions(+), 97 deletions(-) delete mode 100644 hphp/idl/Makefile create mode 100755 hphp/tools/bootstrap/skeleton.sh diff --git a/hphp/idl/Makefile b/hphp/idl/Makefile deleted file mode 100644 index 2c93c3bd3..000000000 --- a/hphp/idl/Makefile +++ /dev/null @@ -1,97 +0,0 @@ - -V ?= @ - -IDL_FILES = $(wildcard *.idl.json) -ifndef REPO_ADD -REPO_ADD = git add -endif -ifndef REPO_DEL -REPO_DEL = git rm -endif - -PHP := $(wildcard /usr/local/hphpi/bin/hhvm) -PHP := $(if $(PHP),$(PHP) -v Preg.ErrorLog=false,php) - -all: - -lists: ../test/test_ext.h ../test/test_ext.inc ../runtime/ext/ext.h - -../test/test_ext.h: idl_list.php $(IDL_FILES) - @echo 'Generating $@' - $(V)$(PHP) idl_list.php test_ext $@ - -../test/test_ext.inc: idl_list.php $(IDL_FILES) - @echo 'Generating $@' - $(V)$(PHP) idl_list.php test_suites $@ - $(V)touch ../test/test.cpp - -../runtime/ext/ext.h: idl_list.php $(IDL_FILES) - @echo 'Generating $@' - $(V)$(PHP) idl_list.php ext $@ - -$(EXT): $(EXT).idl.json idl.php base.php - @echo 'Generating files from $<...' - @echo ' --> ext_$@.h ext_$@.cpp' - $(V)$(PHP) idl.php cpp $< ext_$@.h ext_$@.cpp - @echo ' --> test_ext_$@.h test_ext_$@.cpp' - $(V)$(PHP) idl.php test $< test_ext_$@.h test_ext_$@.cpp - @echo ' --> ../runtime/ext/ext_$@.h ../runtime/ext/ext_$@.cpp' - $(V)$(PHP) idl.php param $< ../runtime/ext/ext_$@.h ../runtime/ext/ext_$@.cpp - -# run this for a newly prepared idl file -install: $(EXT) lists - $(V)cp ext_$<.h ext_$<.cpp ../runtime/ext/ - $(REPO_ADD) ../runtime/ext/ext_$<.h ../runtime/ext/ext_$<.cpp - $(V)cp $<.inc ../system/ - $(REPO_ADD) ../system/$<.inc - $(V)touch ../compiler/builtin_symbols.cpp - $(V)cp test_ext_$<.h test_ext_$<.cpp ../test/ - $(REPO_ADD) ../test/test_ext_$<.h ../test/test_ext_$<.cpp - $(V)$(PHP) ../../bin/license.php - -# run this to add or remove a function from an existing idl file -update: $(EXT) lists - $(V)touch ../compiler/builtin_symbols.cpp - $(V)$(PHP) ../../bin/license.php - -remove: - @echo 'Regenerating dynamic tables...' - make -C ../ clobber && make -C ../ && make -C ../system - @echo 'Removing list files...' - $(V)perl -p -i -n -e "s/#include \n//" \ - ../test/test_ext.h - $(V)perl -p -i -n -e "s/RUN_TESTSUITE\(TestExt$(EXT)\);\n//i" \ - ../test/test_ext.inc - $(V)perl -p -i -n -e "s/#include .*\/ext_$(EXT).h>\n//" \ - ../runtime/ext/ext.h - @echo 'Removing source files...' - $(REPO_DEL) ../test/test_ext_$(EXT).h - $(REPO_DEL) ../test/test_ext_$(EXT).cpp - $(REPO_DEL) ../runtime/ext/ext_$(EXT).h - $(REPO_DEL) ../runtime/ext/ext_$(EXT).cpp - @echo 'Removing IDL file...' - $(REPO_DEL) $(EXT).idl.json - make -C ../ clobber && make -C ../ - -clean clobber: - $(V)rm -f *~ $(patsubst %.idl.json, %, $(IDL_FILES)) $(patsubst %.idl.json, ext_%.h, $(IDL_FILES)) $(patsubst %.idl.json, ext_%.cpp, $(IDL_FILES)) $(patsubst %.idl.json, %.inc, $(IDL_FILES)) $(patsubst %.idl.json, test_ext_%.h, $(IDL_FILES)) $(patsubst %.idl.json, test_ext_%.cpp, $(IDL_FILES)) - -update-all: - @for c in $(patsubst %.idl.json, %, $(IDL_FILES)); do $(MAKE) update EXT=$$c; done; - -# re-generating .idl files - -%.gendoc: - @php schema.php $(patsubst %.gendoc, %.idl.json, $@) -1 > $@.php - @mv -f $@.php $(patsubst %.gendoc, %.idl.json, $@) - -gendoc-all: $(patsubst %.idl.json, %.gendoc, $(IDL_FILES)) - -# re-generating doc comments for system classes - -SYS_PHPS = $(wildcard ../system/classes/*.php) - -%.sysdoc: - @php sysdoc.php $(patsubst %.sysdoc, %, $@) - -sysdoc-all: $(patsubst %, %.sysdoc, $(SYS_PHPS)) diff --git a/hphp/tools/bootstrap/skeleton.sh b/hphp/tools/bootstrap/skeleton.sh new file mode 100755 index 000000000..84e4652e6 --- /dev/null +++ b/hphp/tools/bootstrap/skeleton.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# $1 Source IDL file +# $2 (optional) location to store skeleton + +if [ -z "$HPHP_HOME" ]; then + echo "HPHP_HOME dir not set" >&2 + exit 1 +fi + +HHVM=$HPHP_HOME/hphp/hhvm/hhvm +SOURCE=$1 + +if [ -z "$2" ]; then + DESTDIR=$HPHP_HOME/hphp/runtime/ext/ +else + DESTDIR=$2 +fi + +if [ ! -x "$HHVM" ]; then + echo "No hhvm binary found in $HHVM, build hhvm first" >&2 + exit 1 +fi + +if [ ! -f "$SOURCE" ]; then + echo "Unable to find $SOURCE IDL file" >&2 + exit 1 +fi + +if [ ! -d "$DESTDIR" ]; then + echo "$DESTDIR is not a directory" >&2 + exit 1 +fi + +EXTNAME=`basename $SOURCE .idl.json` +if [ -f "${DESTDIR}/ext_${EXTNAME}.h" -o -f "${DESTDIR}/ext_${EXTNAME}.cpp" ]; then + echo "Target file(s) already exist" >&2 + exit 1 +fi + +echo "Creating skeleton for $EXTNAME in $DESTDIR/ext_${EXTNAME}.{cpp,h}" +$HHVM $HPHP_HOME/hphp/system/idl/idl.php cpp ${SOURCE} ${DESTDIR}/ext_${EXTNAME}.h ${DESTDIR}/ext_${EXTNAME}.cpp