# # $Id: Makefile,v 1.14 2009/07/01 07:58:44 mikeaubury Exp $ # ROOT =../.. LIBROOT =../../lib #All stuff common to more then one Aubit compiler make file is there: include ${ROOT}/incl/Makefile-common ## ================================================================== ## Settings ## ================================================================== #LEX=no #YACC=no ifeq "${LEX}" "no" LEX_YY_C =${ROOT}/tools/no_yacc/cygwin/compilers/sql/lex.sqlparse_yy.c CFLAGS+=-DLEX_YY_PREGEN=1 -DLEX_YY=\"$(LEX_YY_C)\" else LEX_YY_C =lex.yy.c endif ifeq "${YACC}" "no" Y_TAB_C =${ROOT}/tools/no_yacc/cygwin/compilers/sql/y.tab.c CFLAGS +=-I${ROOT}/tools/no_yacc/cygwin/compilers/sql KW_YH =${ROOT}/tools/no_yacc/cygwin/compilers/4glc/rules/generated/kw.yh STATESDEP= STATESFILE=${ROOT}/tools/no_yacc/cygwin/compilers/sql/mk_sstates.c ${ROOT}/tools/no_yacc/cygwin/compilers/sql/mk_sstates_1.h else Y_TAB_C =y.tab.c KW_YH =../4glc/rules/generated/kw.yh STATESDEP= mkstates y.output STATESFILES=mk_sstates.c endif ALL =${ROOT}/bin/sql_parse $(PLUGINDIR)/libSQLPARSE_INFORMIX${SO_EXT} CFLAGS +=-g ${PIC} -I$(ROOT)/incl -I. -DSQLCOMPILER LDFLAGS =-g SQLPACK_IFX_PATH =../4glc/rules/sqlpack/infx ## ================================================================== ## Targets ## ================================================================== all: ${ALL} @echo "Run-time SQL parser/converter targets:" @echo "${ALL}" @echo "successfuly compiled." #Executable that performs SQL parsing/conversion on a SQL in file #NB: why not link with/dlopen libSQLPARSE_xxx.so instead of statically linking #with y.tab.o ? ${ROOT}/bin/sql_parse: y.tab.o main.o ${CC} ${CFLAGS} -I$(ROOT)/incl $^ -o $@ -L$(LIBROOT) -l${AUBITLIBFULL} #Shared library that performs SQL parsing and conversion at run-time #NB: why is it linked with libaubt4gl, when that lib is what loads it #at run-time (except on Windows where it needs to be linked to resolve symbols)? $(PLUGINDIR)/libSQLPARSE_INFORMIX${SO_EXT}: y.tab.o ${CC} -g ${SO_LDFLAGS} -I$(ROOT)/incl $< -o $@ -L$(LIBROOT) -l${AUBITLIBFULL} ## ================================================================== ## Sub-targets ## ================================================================== main.o: main.c ${CC} ${CFLAGS} -c -DTEST $< m2.lex: gen_lex 2.reqd ${SH} gen_lex > $@ 2.reqd: ${KW_YH} not_used fgrep -f not_used -v $< > $@ ../4glc/rules/generated/kw.yh: ifneq "${YACC}" "no" ${MAKE} -C ../4glc endif #WARNING: order is IMPORTANT! sql.yacc: 1.reqd 2.reqd 10.reqd ${SQLPACK_IFX_PATH}/update.rule \ ${SQLPACK_IFX_PATH}/schema.rule ${SQLPACK_IFX_PATH}/sql1.rule \ ${SQLPACK_IFX_PATH}/select.rule \ ${SQLPACK_IFX_PATH}/simple.rule \ 80.reqd 99.reqd ${CAT} $^ > $@ ${Y_TAB_C}: sql.yacc ifneq "${YACC}" "no" ${YACC} -p sqlparse -r all -v -t -d $< else @echo "No yacc (${YACC}) Using ${Y_TAB_C}" endif ${LEX_YY_C}: m2.lex ifneq "${LEX}" "no" ${LEX} -i $< cp lex.yy.c lex.sqlparse_yy.c else @echo "No lex (${LEX}) Using ${LEX_YY_C}" endif y.tab.o: ${Y_TAB_C} ${LEX_YY_C} util.c ilist.h ../4glc/fix_insert.c cmds.c $(STATESFILES) ${CC} -I. ${CFLAGS} -c $< -o $@ mk_sstates.c: $(STATESDEP) ${SH} mkstates $(AWK) y.output: y.tab.c ## ================================================================== ## Clean ## ================================================================== clean: ${RM} -f *.o *.so *.dll ${ALL} 2.reqd *~ sql.yacc \ y.tab.h y.tab.c y.output m2.lex lex.yy.c lex.yy.c mk_sstates_1.h mk_sstates.c lex.sqlparse_yy.c