# +----------------------------------------------------------------------+ # | Aubit 4gl Language Compiler Version $.0 | # +----------------------------------------------------------------------+ # | Copyright (c) 2000-1 Aubit Development Team (See Credits file) | # +----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of one of the following licenses: | # | | # | A) the GNU General Public License as published by the Free Software | # | Foundation; either version 2 of the License, or (at your option) | # | any later version. | # | | # | B) the Aubit License as published by the Aubit Development Team and | # | included in the distribution in the file: LICENSE | # | | # | This program is distributed in the hope that it will be useful, | # | but WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | # | GNU General Public License for more details. | # | | # | You should have received a copy of both licenses referred to here. | # | If you did not, or have any questions about Aubit licensing, please | # | contact afalout@ihug.co.nz | # +----------------------------------------------------------------------+ # # $Id: Makefile,v 1.40 2010/04/12 15:15:33 mikeaubury Exp $ # ROOT =../.. LIBROOT =${ROOT}/lib BINROOT =${ROOT}/bin #All stuff common to more then one Aubit compiler make file is there: include ${ROOT}/incl/Makefile-common ## ================================================================== ## Options ## ================================================================== #CFLAGS =${WALL} -g -I../../incl ifeq "${LEX}" "no" LEX_YY_C=lex.pregen.c LEX_OBJ=lex.pregen.o REFRESHLEX= else LEX_YY_C=lex.yy.c LEX_OBJ=lex.yy.o REFRESHLEX=refresh.lex endif ifneq "${COMSPEC}" "" #We are non Windows ifeq "${GCC_MINGW}" "yes" #We are using MinGW compiler #for features.h included from search.h in Aubit tools/ directory #MinGW does not have features.h #This is dangerous - who knows what we might pick up from #there this way LIST_CFLAGS =${CFLAGS} -I"${WIN_CYGPATH}/usr/include" else #We are using CygWin compiler ifeq "${HAVE_RPCLIB}" "1" #In case we have rpclib, but not using rpcgen on CygWin #for rpc.h and in.h RPC_CFLAGS =${CFLAGS} -I"${ROOT}\tools\no_rpc\cygwin" \ -I"${WIN_CYGPATH}\usr\include" endif endif endif #I think that npcode_xdr.o is used on compile lines where its not needed #(shouldn't be used on any executable ending in _fgl - should be used on the #ones that don't) #OBJ_COMMON =npcode_xdr.o common_print.o common_eval.o OBJ_COMMON =common_print.o common_eval.o OBJ_COMMON_C =npcode_xdr.o common_io_c.o OBJ_COMMON_A4GL =common_io_fgl.o OBJ_RUNNER_COMMON =runner_main.o runner_vars.o OBJ_C2PCODE_COMMON =y.tab.o ${LEX_OBJ} compiler_main.o \ compiler_optimize.o set_var.o compiler_pcode.o \ compiler_variables.o compiler_list.o compiler_param.o OBJ_CHECKER_COMMON =checker_read.o OBJ_C2PCODE_C =${OBJ_COMMON} ${OBJ_C2PCODE_COMMON} ${OBJ_COMMON_C} OBJ_C2PCODE_A4GL =${OBJ_COMMON} ${OBJ_C2PCODE_COMMON} ${OBJ_COMMON_A4GL} OBJ_CHECKER_C =${OBJ_COMMON} ${OBJ_COMMON_C} ${OBJ_CHECKER_COMMON} OBJ_CHECKER_A4GL =${OBJ_COMMON} ${OBJ_COMMON_A4GL} ${OBJ_CHECKER_COMMON} OBJ_RUNNER_C =${OBJ_COMMON} ${OBJ_RUNNER_COMMON} ${OBJ_COMMON_C} \ runner_calls_c.o runner_execute_c.o OBJ_RUNNER_A4GL =${OBJ_COMMON} ${OBJ_RUNNER_COMMON} ${OBJ_COMMON_A4GL} \ runner_calls_fgl.o runner_execute_fgl.o OBJ_LINKER = link.o common_io_fgl.o compiler_optimize.o common_eval.o #open.c write.c print.c missing from CVS: OBJ_OPEN =npcode_xdr.o open.o write.o print.o CMODS =runner_calls.c checker_read.c common_eval.c \ common_io.c common_print.c compiler_list.c compiler_main.c \ compiler_param.c compiler_pcode.c compiler_variables.c \ runner_execute.c runner_main.c runner_vars.c link.c SRCS =Makefile npcode.x npcode_defs.h calls.h \ fgl_calls.h std_calls.h simple.lex simple.yacc ${CMODS} #ifneq "${COMSPEC}" "" LINKLIBS =-L${LIBROOT} -l${AUBITLIBFULL} #endif ifeq "${DBG}" "yes" LINKLIBS +=-lefence endif #Targets we can compile in any case ALL =${BINROOT}/c2pcode_fgl ${BINROOT}/checker_fgl ${BINROOT}/runner_fgl \ ${BINROOT}/link_fgl ${REFRESHLEX} #Targets we can compile only if we have RPC ALL_RPC =${BINROOT}/c2pcode ${BINROOT}/checker ${BINROOT}/runner #We can't make this two at all - probably obsolete: #${BINROOT}/open_pcode - open.c write.c print.c are missing from CVS #${LIBROOT}/libDATA_pcode${SO_EXT} - xgen not set up ifeq "${HAVE_RPCLIB}" "1" ALL +=${ALL_RPC} endif #we don't want -Wall in CFLAGS when compiling rpcgen generated code because it would #give us bunch of warnings about unused varibles, that we cannot fix: CFLAGS_RPCGEN =$(CFLAGS:%-Wall=%) ifeq "${HAVE_RPCLIB}" "1" ifeq "${USE_RPCGEN}" "0" #use pre-compiled files RPCGEN_NPCODE =${CP} ${ROOT}/tools/cygwin/npcode.h . else RPCGEN_NPCODE =${RPCGEN} npcode.x endif endif XGENEXE =${ROOT}/bin/xgen ifneq "${COMSPEC}" "" #set by configure: RPCLIB_NAME=-lrpclib #RPCLINKLIBS=-L"D:/cygwin/lib" -lrpclib RPCLINKLIBS=-L"D:/cygwin/lib" ${RPCLIB_NAME} #-lcygwin endif #ifeq "${TARGET_OS}" "solaris" #RPCLINKLIBS=-lnsl #endif ifeq "${TARGET_OS}" "solaris" CFLAGS+=-DSOLARIS endif ifeq "${USE_LIBDL}" "1" DL_LINK_LIBS=-ldl endif ifeq "${TARGET_OS}" "hpux" DL_LINK_LIBS =-lcl endif #rpclib dependency - Its already gone... #Its used for c2pcode - but not for c2pcode_fgl (or any *_fgl). #The idea being that I can get people not involved in 4GL to help with #development of c2pcode without needing the aubit4gl headers and libraries CFLAGS_NOWARN =$(subst ${CWARN},,${CFLAGS}) ## ================================================================== ## Targets ## ================================================================== all: ${ALL} ${BINROOT}/runner_fgl_wrapper @echo "Default targets (${ALL}) compiled." %.o:%.c ${CC} ${CFLAGS_NOWARN} -c $< ${BINROOT}/checker: $(OBJ_CHECKER_C) npcode.h $(CC) ${CFLAGS_NOWARN} -g -o $@ $(OBJ_CHECKER_C) ${LINKLIBS} ${RPCLINKLIBS} ${EXTRASYSTEMLIBS} #use "npcode.xs.h" instead of npcode.h #${BINROOT}/checker_fgl: $(OBJ_CHECKER_A4GL) npcode.h ${BINROOT}/checker_fgl: $(OBJ_CHECKER_A4GL) npcode.xs.h $(CC) ${CFLAGS_NOWARN} -g -DRPCGEN_HEADERS -o $@ $(OBJ_CHECKER_A4GL) ${LINKLIBS} #${RPCLINKLIBS} ${BINROOT}/c2pcode: $(OBJ_C2PCODE_C) npcode.h ${CC} ${CFLAGS_NOWARN} -g -o $@ $(OBJ_C2PCODE_C) ${LINKLIBS} ${RPCLINKLIBS} ${EXTRASYSTEMLIBS} #${BINROOT}/c2pcode_fgl: $(OBJ_C2PCODE_A4GL) npcode.h ${BINROOT}/c2pcode_fgl: $(OBJ_C2PCODE_A4GL) npcode.xs.h $(CC) ${CFLAGS_NOWARN} -g -DRPCGEN_HEADERS -o $@ $(OBJ_C2PCODE_A4GL) ${LINKLIBS} #${RPCLINKLIBS} ${BINROOT}/link_fgl: $(OBJ_LINKER) npcode.xs.h $(CC) ${CFLAGS_NOWARN} -g -o $@ $(OBJ_LINKER) ${LINKLIBS} ${BINROOT}/runner: $(OBJ_RUNNER_C) $(CC) ${CFLAGS_NOWARN} $(RDYNAMIC) -o $@ $(OBJ_RUNNER_C) ${RPCLINKLIBS} ${DL_LINK_LIBS} ${EXTRASYSTEMLIBS} #${BINROOT}/runner_fgl: $(OBJ_RUNNER_A4GL) ${BINROOT}/runner_fgl: $(OBJ_RUNNER_A4GL) npcode.xs.h $(CC) ${CFLAGS_NOWARN} ${RDYNAMIC} -DRPCGEN_HEADERS -o $@ $(OBJ_RUNNER_A4GL) ${LINKLIBS} ${DL_LINK_LIBS} ${EXTRASYSTEMLIBS} #${RPCLINKLIBS} ${BINROOT}/runner_fgl_wrapper: ${CP} ./runner_fgl_wrapper $@ #------------------- probably obsolete targets ------------------------- #What is this? libDATA_pcode${SO_EXT}: ${LIBROOT}/libDATA_pcode${SO_EXT} ${LIBROOT}/libDATA_pcode${SO_EXT} : npcode.xi.o npcode.xio.o npcode.xo.o $(CC) ${CFLAGS_NOWARN} -g ${SO_LDFLAGS} $^ -o $@ #/* SYSCALLS.c:781:NC */ extern ENTRY *hsearch (ENTRY, ACTION); #/* SYSCALLS.c:773:NC */ extern int hcreate (size_t); # -lrapi # -L"D:\cygwin\lib\w32api" -lshlwapi #@RPCLIB_LFLAGS@ @RPCLIB_NAME@ #What is this? #open.c is missing from CVS: ${BINROOT}/open_pcode: ${OBJ_OPEN} $(CC) ${CFLAGS_NOWARN} $^ -o $@ ${LINKLIBS} ## ================================================================== ## Sub-targets ## ================================================================== runner_calls_c.o : runner_calls.c calls.h std_calls.h $(CC) ${CFLAGS_NOWARN} -g -c $< -DSTDCALLS -o $@ runner_calls_fgl.o : runner_calls.c calls.h fgl_calls.h $(CC) ${CFLAGS_NOWARN} -DUSE_A4GL_DEBUG=1 -g -c $< -DFGLCALLS -I$(ROOT)/incl -o $@ runner_execute_c.o : runner_execute.c $(CC) ${CFLAGS_NOWARN} -g -c $< -DSTDCALLS -o $@ runner_execute_fgl.o : runner_execute.c $(CC) ${CFLAGS_NOWARN} -DUSE_A4GL_DEBUG=1 -g -c $< -DFGLCALLS -I$(ROOT)/incl -o $@ npcode_xdr.o: npcode_xdr.c $(CC) ${CFLAGS_NOWARN} ${RPC_CFLAGS} -c -o $@ $< common_io_c.o: common_io.c $(CC) ${CFLAGS_NOWARN} -g -DRPCGEN_HEADERS -DNO_AUBITLIB ${RPC_CFLAGS} -c -o $@ $< common_io_fgl.o: common_io.c $(CC) ${CFLAGS_NOWARN} -g -DHAS_AUBITLIB ${RPC_CFLAGS} -c -o $@ $< compiler_list.o: compiler_list.c $(CC) ${CFLAGS_NOWARN} ${LIST_CFLAGS} -c -o $@ $< ifeq "${HAVE_RPCLIB}" "1" npcode_xdr.c npcode.h : npcode.x ${RPCGEN_NPCODE} endif #use xgen rather than rpcgen then use "npcode.xs.h" instead of npcode.h npcode.xs.h npcode.xi.c: npcode.x ${XGENEXE} ${XGENEXE} $< #for libDATA_pcode - PROBABLY OBSOLETE #npcode.xi.o npcode.xio.o npcode.xo.o: npcode.x ${XGENEXE} # ${XGENEXE} $< something ifeq "${HAVE_RPCLIB}" "1" y.tab.o : simple.yacc npcode.h else y.tab.o : simple.yacc npcode.xs.h endif #bison -y -r all -d -v $^ # add -t for yacc debugging... ifneq "${BISON}" "no" ${BISON} -y -t -d -v $< else @echo "AutoConf did not detect valid version of Bison on your system" @exit 1 endif $(CC) ${CFLAGS_NOWARN} -g -c y.tab.c lex.yy.c: simple.lex # flex -i $^ ${LEX} -i $< ${XGENEXE}: ${MAKE} -C ${ROOT}/compilers/xgen ## ================================================================== ## Testing ## ================================================================== #runit.c: runit.4gl # A4GL_FAKELEXTYPE=C 4glc runit.4gl mine.4pe: hello.c simple simple $< ## ================================================================== ## Archives packaging ## ================================================================== src.tgz: $(SRCS) tar cvzf $@ $(SRCS) bin: make_pcode.c main.c simple.yacc simple.lex pcode.h variable.c tar cvf pcode.tar $^ gzip -9 pcode.tar ## ================================================================== ## Dependencies ## ================================================================== #make_pcode.o y.tab.o main.o variable.o param.o runner_main.o: npcode.h ifeq "${HAVE_RPCLIB}" "1" ${OBJ_C2PCODE_C} ${OBJ_CHECKER_C} ${OBJ_RUNNER_C}: npcode.h endif ${OBJ_C2PCODE_A4GL} ${OBJ_CHECKER_A4GL} ${OBJ_RUNNER_A4GL}: npcode.xs.h ## ================================================================== ## Other Targets ## ================================================================== splint: lclint lclint: $(CMODS) ${LCLINTERR}${LCLINTEXE} ${LCLINTFLAGS} $(LCLINT_CFLAGS) $(CMODS) > ${LCLINTLOG} ${LCLINTLOGCMD} ${CAT} ${LCLINTLOG} >> ${ROOT}/${LCLINT_GLOBAL_LOG} @echo "see ${LCLINTLOG} for results" show: @echo "HAVE_RPCLIB=${HAVE_RPCLIB}" @echo "USE_RPCGEN=${USE_RPCGEN}" refresh.lex: lex.yy.c cp lex.yy.c lex.pregen.c ## ================================================================== ## Clean ## ================================================================== clean: ${RM} *.o y.tab.c lex.yy.c ${ALL} ${ALL_RPC} y.output y.tab.h *.bak \ npcode.h npcode.xs.h npcode_xdr.c *.x.h *.xi.c *.xio.c *.xo.c *.xs.h *~ #set_var.c # =============================== EOF ===============================