📄 makefile
字号:
# Makefile. Generated from Makefile.in by configure.
# Makefile for the FreeBASIC Compiler.
# Run 'configure' to generate Makefile from Makefile.in
##################################################################
AR = ar
ARFLAGS = cru
ACLOCAL = aclocal
AUTOCONF = autoconf
AUTOHEADER = @AUTOHEADER@
CC = gcc
CFLAGS = -g -O2
DEFS = -DPACKAGE_NAME=\"fbc\" -DPACKAGE_TARNAME=\"fbc\" -DPACKAGE_VERSION=\"0.20.0\" -DPACKAGE_STRING=\"fbc\ 0.20.0\" -DPACKAGE_BUGREPORT=\"http://sourceforge.net/projects/fbc\" -DTARGET_WIN32=1 -DHOST_WIN32=1 -DTARGET_X86=1 -DHOST_X86=1
WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@
CPP = @CPP@
CPPFLAGS =
EXEEXT = .exe
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
LDFLAGS =
LIBICONV = @LIBICONV@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
SHELL = /bin/sh
VPATH = ../..
datadir = ${prefix}/share
exec_prefix = /usr/local
libdir = ${exec_prefix}/lib
localedir = $(datadir)/locale
prefix = /usr/local
srcdir = ../..
top_builddir = .
FBC = fbc
# !!!FIXME!!! -arch can't be assumed, using target_cpu will give
# "686" for example, making fbc to fail in non mmx-cpu's
FBC_CFLAGS = -e -c -i $(srcdir) -target win32 -arch 486
FBC_LFLAGS := -v -target win32
ifdef LINK_STATIC
FBC_LFLAGS += -Wl -static
endif
ifdef DEBUG
FBC_CFLAGS += -g
FBC_LFLAGS += -g
endif
ifdef EXTRAERR
FBC_CFLAGS += -exx
endif
# don't do anything with BFD unless objinfo feature enabled
ifeq (objinfo,objinfo)
ifdef FB_BFD
FBC_CFLAGS += -d USE_FB_BFD_HEADER
endif
# if FB_BFD is undefined then this probably won't matter
ifdef BFD_VER
FBC_CFLAGS += -d __BFD_VER__=$(BFD_VER)
endif
FBC_LIBS = -l bfd -l iberty
endif
##################################################################
# !!!FIXME!!! can't use $(DEFS) directly because FB doesn't accept
# cmd-line options in GCC's format
#
# host OS - where the compiler will run
#
ifeq (win32,cygwin)
DEFS := -d HOST_CYGWIN
FBC_LIBS += -l intl
endif
ifeq (win32,dos)
DEFS := -d HOST_DOS
FBC_LIBS += -l intl
endif
ifeq (win32,freebsd)
DEFS := -d HOST_FREEBSD
FBC_LIBS += -l intl
endif
ifeq (win32,linux)
DEFS := -d HOST_LINUX
endif
ifeq (win32,win32)
DEFS := -d HOST_WIN32
FBC_LFLAGS += -t 2048
FBC_LIBS += -l intl
endif
#
# target OS - where the code generated by the compiler will run
# (also determines which platforms can be specified by -target for cross-compiling)
#
ifeq (win32,cygwin)
FBC_OSDEPSRCS := fbc_cyg.bas
DEFS += -d TARGET_CYGWIN
endif
ifeq (win32,dos)
FBC_OSDEPSRCS := fbc_dos.bas
DEFS += -d TARGET_DOS
endif
ifeq (win32,freebsd)
FBC_OSDEPSRCS := fbc_freebsd.bas
DEFS += -d TARGET_FREEBSD
endif
ifeq (win32,linux)
FBC_OSDEPSRCS := fbc_linux.bas
DEFS += -d TARGET_LINUX
endif
ifeq (win32,win32)
FBC_OSDEPSRCS := fbc_win32.bas
DEFS += -d TARGET_WIN32
endif
ifeq (win32,xbox)
FBC_OSDEPSRCS := fbc_xbox.bas
DEFS += -d TARGET_XBOX
endif
#
# cross-compile targets
#
ifeq (yes,yes)
FBC_OSDEPSRCS += fbc_cyg.bas
DEFS += -d CROSSCOMP_CYGWIN
endif
ifeq (yes,yes)
FBC_OSDEPSRCS += fbc_dos.bas
DEFS += -d CROSSCOMP_DOS
endif
ifeq (,yes)
FBC_OSDEPSRCS += fbc_freebsd.bas
DEFS += -d CROSSCOMP_FREEBSD
endif
ifeq (,yes)
FBC_OSDEPSRCS += fbc_linux.bas
DEFS += -d CROSSCOMP_LINUX
endif
ifeq (,yes)
FBC_OSDEPSRCS += fbc_win32.bas
DEFS += -d CROSSCOMP_WIN32
endif
ifeq (,yes)
FBC_OSDEPSRCS += fbc_xbox.bas
DEFS += -d CROSSCOMP_XBOX
endif
#
# host cpu - where the compiler will run
#
ifeq (x86,x86)
DEFS += -d HOST_X86
endif
#
# target cpu - where the code generated by the compiler will run
#
ifeq (x86,x86)
DEFS += -d TARGET_X86
endif
#
# misc
#
# compiling the standalone compiler?
ifeq (yes,yes)
DEFS += -d STANDALONE
else
DEFS += -d ARCH_PREFIX=$(prefix)
endif
# if objinfo disabled, set a define so we can exclude sections
# of code from the source
ifneq (objinfo,objinfo)
DEFS += -d DISABLE_OBJINFO
endif
##################################################################
FBC_MAIN := fbc.bas
FBC_COMP = $(subst .bas,_new$(EXEEXT),$(FBC_MAIN))
FBC_SRCS := $(FBC_MAIN)
FBC_SRCS += ast.bas ast-gosub.bas ast-node-addr.bas ast-node-assign.bas ast-node-bop.bas ast-node-mem.bas
FBC_SRCS += ast-node-branch.bas ast-node-check.bas ast-node-const.bas ast-node-conv.bas
FBC_SRCS += ast-node-data.bas ast-node-decl.bas ast-node-enum.bas ast-node-call.bas
FBC_SRCS += ast-node-arg.bas ast-node-idx.bas ast-node-iif.bas ast-node-link.bas
FBC_SRCS += ast-node-load.bas ast-node-misc.bas ast-node-ptr.bas ast-node-scope.bas
FBC_SRCS += ast-node-stack.bas ast-node-uop.bas ast-node-var.bas ast-node-field.bas
FBC_SRCS += ast-node-typeini.bas ast-optimize.bas ast-node-proc.bas ast-node-namespace.bas
FBC_SRCS += ast-helper.bas ast-misc.bas
FBC_SRCS += dstr.bas edbg_stab.bas emit.bas emit_x86.bas fb.bas fb-main.bas
ifeq (objinfo,objinfo)
FBC_SRCS += fb-objinfo.bas
endif
FBC_SRCS += error.bas hlp.bas hlp-str.bas
FBC_SRCS += ir.bas ir-tac.bas ir-hlc.bas
FBC_SRCS += hash.bas clist.bas flist.bas list.bas stack.bas pool.bas
FBC_SRCS += lex.bas lex-utf.bas pp.bas pp-cond.bas pp-define.bas pp-pragma.bas
FBC_SRCS += parser-assignment.bas parser-comment.bas parser-decl-const.bas
FBC_SRCS += parser-decl-enum.bas parser-decl-option.bas parser-decl-proc-params.bas
FBC_SRCS += parser-decl-proc.bas parser-decl-struct.bas parser-decl-symb-init.bas
FBC_SRCS += parser-decl-symbtype.bas parser-decl-typedef.bas parser-decl-var.bas
FBC_SRCS += parser-decl.bas parser-identifier.bas parser-inlineasm.bas parser-label.bas
FBC_SRCS += parser-proccall-args.bas parser-proccall.bas parser-statement.bas
FBC_SRCS += parser-toplevel.bas parser-compound.bas parser-compound-do.bas
FBC_SRCS += parser-compound-for.bas parser-compound-if.bas parser-compound-scope.bas
FBC_SRCS += parser-compound-select.bas parser-compound-namespace.bas
FBC_SRCS += parser-compound-select-const.bas parser-compound-while.bas
FBC_SRCS += parser-compound-extern.bas parser-compound-with.bas
FBC_SRCS += parser-proc.bas parser-quirk-array.bas parser-decl-def.bas
FBC_SRCS += parser-quirk-casting.bas parser-quirk-console.bas parser-quirk-data.bas
FBC_SRCS += parser-quirk-error.bas parser-quirk-file.bas parser-quirk-goto-return.bas
FBC_SRCS += parser-quirk-iif.bas parser-quirk-math.bas parser-quirk-on.bas
FBC_SRCS += parser-quirk-peekpoke.bas parser-quirk-string.bas parser-quirk-vafirst.bas
FBC_SRCS += parser-quirk-mem.bas parser-quirk.bas parser-quirk-gfx.bas parser-expr-atom.bas
FBC_SRCS += parser-expr-binary.bas parser-expr-constant.bas parser-expr-function.bas
FBC_SRCS += parser-expr-unary.bas parser-expr-variable.bas
FBC_SRCS += reg.bas
FBC_SRCS += rtl.bas rtl-array.bas rtl-console.bas rtl-data.bas rtl-error.bas
FBC_SRCS += rtl-file.bas rtl-gfx.bas rtl-gosub.bas rtl-macro.bas rtl-math.bas rtl-mem.bas
FBC_SRCS += rtl-print.bas rtl-profile.bas rtl-string.bas rtl-system.bas
FBC_SRCS += symb.bas symb-const.bas symb-data.bas symb-define.bas symb-enum.bas
FBC_SRCS += symb-keyword.bas symb-label.bas symb-lib.bas symb-proc.bas symb-scope.bas
FBC_SRCS += symb-struct.bas symb-typedef.bas symb-var.bas symb-bitfield.bas
FBC_SRCS += symb-namespace.bas symb-mangling.bas symb-comp.bas
FBC_SRCS += $(FBC_OSDEPSRCS)
FBC_OBJS := $(patsubst %.bas,%.o,$(FBC_SRCS))
# only if objinfo is enabled
ifeq (objinfo,objinfo)
# only if we are not using bfd.bi (FB_BFD is undefined)
ifndef FB_BFD
FBC_OBJS += c-objinfo.o
endif
endif
FBC_HEADERS := $(wildcard ../../inc/*.bi)
FBC_CFLAGS += -m $(subst .bas,,$(FBC_MAIN))
##################################################################
all: $(FBC_COMP)
.SUFFIXES:
.SUFFIXES: .bas $(EXEEXT)
%.o : %.bas $(FBC_HEADERS)
$(FBC) $(FBC_CFLAGS) $(DEFS) $< -o $@
c-objinfo.o : c-objinfo.c
$(CC) $(ALL_CFLAGS) -c $< -o $@
$(FBC_COMP) : $(FBC_OBJS)
$(FBC) $(FBC_LFLAGS) $(DEFS) $(FBC_OBJS) $(FBC_LIBS) -x $@
##################################################################
# Rules to rebuild the configuration
Makefile: $(srcdir)/Makefile.in config.status
$(SHELL) ./config.status Makefile
config.status: $(srcdir)/configure
$(SHELL) ./config.status --recheck
$(srcdir)/configure: #n $(srcdir)/aclocal.m4
cd $(srcdir) && $(AUTOCONF)
$(srcdir)/aclocal.m4: #n $(srcdir)/../config/acx.m4 \
$(srcdir)/../config/warnings.m4 \
$(srcdir)/configure.ac
cd $(srcdir) && $(ACLOCAL) -I ../config
stamp-h1: config.status
-rm -f stamp-h1
$(SHELL) ./config.status
# Other miscellaneous targets.
mostlyclean:
-rm -rf $(FBC_OBJS)
clean: mostlyclean
-rm -rf makedepend$(EXEEXT) $(FBC_COMP) $(srcdir)/autom4te.cache
distclean: clean
-rm -f stamp-h1 config.status config.cache config.log \
configure.lineno configure.status.lineno Makefile localedir.h \
localedir.hs
maintainer-clean: distclean
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-rm -f $(srcdir)/configure $(srcdir)/aclocal.m4
check:
installcheck:
dvi:
html:
info:
install-info:
install-man:
install:
cp -v fbc_new$(EXEEXT) ../../../../fbc$(EXEEXT)
.PHONY: installdirs install install-strip mostlyclean clean distclean \
maintainer-clean check installcheck dvi html info install-info \
install-man update-po
COMPILE = $(CC) $(DEFS) $(ALL_CFLAGS) -c
# Implicit rules
.c.o:
$(COMPILE) $<
.NOEXPORT:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -