⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 Open-source, free, multi-platform BASIC compiler, with syntax similar MS-QuickBASIC (including the G
💻
字号:
# 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 + -