280 lines
7.0 KiB
Makefile
280 lines
7.0 KiB
Makefile
# Ultra-flat Makefile "prototype" for non-Unix platforms.
|
|
# Does NOT depend on or use configure.
|
|
#
|
|
# Works for simple build but *not* for development (no clean, dist, etc).
|
|
# Also, WARNING, no header dependencies are included!
|
|
#
|
|
# NOTE: Needs a valid config.h for the platform being compiled on.
|
|
#
|
|
# This file should be customized to particular platforms by changing CC and
|
|
# CFLAGS appropriately, along with writing a config.h and _stdint.h for the
|
|
# platform and placing them in a subdirectory of Mkfiles.
|
|
|
|
CFLAGS=-DHAVE_CONFIG_H -IMkfiles -I.
|
|
CC?=gcc
|
|
BUILDCC?=$(CC)
|
|
|
|
all: yasm ytasm vsyasm
|
|
|
|
LIBYASM_OBJS= \
|
|
libyasm/assocdat.o \
|
|
libyasm/bitvect.o \
|
|
libyasm/bc-align.o \
|
|
libyasm/bc-data.o \
|
|
libyasm/bc-incbin.o \
|
|
libyasm/bc-org.o \
|
|
libyasm/bc-reserve.o \
|
|
libyasm/bytecode.o \
|
|
libyasm/errwarn.o \
|
|
libyasm/expr.o \
|
|
libyasm/file.o \
|
|
libyasm/floatnum.o \
|
|
libyasm/hamt.o \
|
|
libyasm/insn.o \
|
|
libyasm/intnum.o \
|
|
libyasm/inttree.o \
|
|
libyasm/linemap.o \
|
|
libyasm/md5.o \
|
|
libyasm/mergesort.o \
|
|
libyasm/phash.o \
|
|
libyasm/section.o \
|
|
libyasm/strcasecmp.o \
|
|
libyasm/strsep.o \
|
|
libyasm/symrec.o \
|
|
libyasm/valparam.o \
|
|
libyasm/value.o \
|
|
libyasm/xmalloc.o \
|
|
libyasm/xstrdup.o \
|
|
module.o
|
|
|
|
MODULES_ARCH_X86_OBJS= \
|
|
modules/arch/x86/x86arch.o \
|
|
modules/arch/x86/x86bc.o \
|
|
modules/arch/x86/x86expr.o \
|
|
modules/arch/x86/x86id.o \
|
|
x86cpu.o \
|
|
x86regtmod.o
|
|
YASM_MODULES=arch_x86
|
|
|
|
MODULES_ARCH_LC3B_OBJS= \
|
|
modules/arch/lc3b/lc3barch.o \
|
|
modules/arch/lc3b/lc3bbc.o \
|
|
lc3bid.o
|
|
YASM_MODULES+=arch_lc3b
|
|
|
|
MODULES_ARCH_OBJS= \
|
|
$(MODULES_ARCH_X86_OBJS) \
|
|
$(MODULES_ARCH_LC3B_OBJS)
|
|
|
|
MODULES_DBGFMTS_OBJS= \
|
|
modules/dbgfmts/null/null-dbgfmt.o \
|
|
modules/dbgfmts/stabs/stabs-dbgfmt.o \
|
|
modules/dbgfmts/codeview/cv-dbgfmt.o \
|
|
modules/dbgfmts/codeview/cv-symline.o \
|
|
modules/dbgfmts/codeview/cv-type.o \
|
|
modules/dbgfmts/dwarf2/dwarf2-dbgfmt.o \
|
|
modules/dbgfmts/dwarf2/dwarf2-line.o \
|
|
modules/dbgfmts/dwarf2/dwarf2-info.o \
|
|
modules/dbgfmts/dwarf2/dwarf2-aranges.o
|
|
YASM_MODULES+=dbgfmt_null
|
|
YASM_MODULES+=dbgfmt_stabs
|
|
YASM_MODULES+=dbgfmt_cv8
|
|
YASM_MODULES+=dbgfmt_dwarf2
|
|
|
|
MODULES_LISTFMTS_OBJS= \
|
|
modules/listfmts/nasm/nasm-listfmt.o
|
|
YASM_MODULES+=listfmt_nasm
|
|
|
|
MODULES_OBJFMTS_OBJS= \
|
|
modules/objfmts/dbg/dbg-objfmt.o \
|
|
modules/objfmts/bin/bin-objfmt.o \
|
|
modules/objfmts/coff/coff-objfmt.o \
|
|
modules/objfmts/coff/win64-except.o \
|
|
modules/objfmts/elf/elf.o \
|
|
modules/objfmts/elf/elf-x86-x86.o \
|
|
modules/objfmts/elf/elf-x86-amd64.o \
|
|
modules/objfmts/elf/elf-objfmt.o \
|
|
modules/objfmts/macho/macho-objfmt.o \
|
|
modules/objfmts/rdf/rdf-objfmt.o \
|
|
modules/objfmts/xdf/xdf-objfmt.o
|
|
YASM_MODULES+=objfmt_dbg
|
|
YASM_MODULES+=objfmt_bin objfmt_dosexe
|
|
YASM_MODULES+=objfmt_coff objfmt_win32 objfmt_win64 objfmt_x64
|
|
YASM_MODULES+=objfmt_elf objfmt_elf32 objfmt_elf64
|
|
YASM_MODULES+=objfmt_macho objfmt_macho32 objfmt_macho64
|
|
YASM_MODULES+=objfmt_rdf
|
|
YASM_MODULES+=objfmt_xdf
|
|
|
|
MODULES_PARSERS_OBJS= \
|
|
modules/parsers/nasm/nasm-parser.o \
|
|
modules/parsers/nasm/nasm-parse.o \
|
|
nasm-token.o \
|
|
modules/parsers/gas/gas-parser.o \
|
|
modules/parsers/gas/gas-parse-intel.o \
|
|
modules/parsers/gas/gas-parse.o \
|
|
gas-token.o
|
|
YASM_MODULES+=parser_nasm parser_tasm
|
|
YASM_MODULES+=parser_gas parser_gnu
|
|
|
|
MODULES_PREPROCS_NASM_OBJS= \
|
|
modules/preprocs/nasm/nasm-eval.o \
|
|
modules/preprocs/nasm/nasm-pp.o \
|
|
modules/preprocs/nasm/nasm-preproc.o \
|
|
modules/preprocs/nasm/nasmlib.o
|
|
YASM_MODULES+=preproc_nasm preproc_tasm
|
|
|
|
MODULES_PREPROCS_RAW_OBJS = \
|
|
modules/preprocs/raw/raw-preproc.o
|
|
YASM_MODULES+=preproc_raw
|
|
|
|
MODULES_PREPROCS_CPP_OBJS = \
|
|
modules/preprocs/cpp/cpp-preproc.o
|
|
YASM_MODULES+=preproc_cpp
|
|
|
|
MODULES_PREPROCS_GAS_OBJS = \
|
|
modules/preprocs/gas/gas-eval.o \
|
|
modules/preprocs/gas/gas-preproc.o
|
|
YASM_MODULES+=preproc_gas
|
|
|
|
MODULES_PREPROCS_OBJS = \
|
|
$(MODULES_PREPROCS_NASM_OBJS) \
|
|
$(MODULES_PREPROCS_RAW_OBJS) \
|
|
$(MODULES_PREPROCS_CPP_OBJS) \
|
|
$(MODULES_PREPROCS_GAS_OBJS)
|
|
|
|
MODULES_OBJS = \
|
|
$(MODULES_ARCH_OBJS) \
|
|
$(MODULES_DBGFMTS_OBJS) \
|
|
$(MODULES_LISTFMTS_OBJS) \
|
|
$(MODULES_OBJFMTS_OBJS) \
|
|
$(MODULES_OPTIMIZERS_OBJS) \
|
|
$(MODULES_PARSERS_OBJS) \
|
|
$(MODULES_PREPROCS_OBJS)
|
|
|
|
YASM_OBJS= \
|
|
frontends/yasm/yasm.o \
|
|
frontends/yasm/yasm-options.o \
|
|
$(LIBYASM_OBJS) \
|
|
$(MODULES_OBJS)
|
|
|
|
YTASM_OBJS= \
|
|
frontends/tasm/tasm.o \
|
|
frontends/tasm/tasm-options.o \
|
|
$(LIBYASM_OBJS) \
|
|
$(MODULES_OBJS)
|
|
|
|
VSYASM_OBJS= \
|
|
frontends/vsyasm/vsyasm.o \
|
|
frontends/yasm/yasm-options.o \
|
|
$(LIBYASM_OBJS) \
|
|
$(MODULES_OBJS)
|
|
|
|
genstring: genstring.c
|
|
$(BUILDCC) -o $@ $<
|
|
|
|
license.c: COPYING genstring
|
|
./genstring license_msg $@ COPYING
|
|
|
|
frontends/yasm/yasm.c: license.c
|
|
|
|
genmacro: tools/genmacro/genmacro.c
|
|
$(BUILDCC) -o $@ $<
|
|
|
|
nasm-version.c: version.mac genmacro
|
|
./genmacro $@ nasm_version_mac version.mac
|
|
|
|
modules/preprocs/nasm/nasm-pp.c: nasm-version.c
|
|
|
|
nasm-macros.c: modules/parsers/nasm/nasm-std.mac genmacro
|
|
./genmacro $@ nasm_standard_mac modules/parsers/nasm/nasm-std.mac
|
|
|
|
modules/parsers/nasm/nasm-parser.c: nasm-macros.c
|
|
|
|
win64-nasm.c: modules/objfmts/coff/win64-nasm.mac genmacro
|
|
./genmacro $@ win64_nasm_stdmac modules/objfmts/coff/win64-nasm.mac
|
|
win64-gas.c: modules/objfmts/coff/win64-gas.mac genmacro
|
|
./genmacro $@ win64_gas_stdmac modules/objfmts/coff/win64-gas.mac
|
|
|
|
modules/objfmts/coff/coff-objfmt.c: win64-nasm.c win64-gas.c
|
|
|
|
genversion: modules/preprocs/nasm/genversion.c YASM-VERSION.h
|
|
$(BUILDCC) -IMkfiles -I. -o $@ $<
|
|
|
|
version.mac: genversion
|
|
./genversion $@
|
|
|
|
genmodule: libyasm/genmodule.c
|
|
$(BUILDCC) -o $@ $<
|
|
|
|
module.c: libyasm/module.in genmodule
|
|
./genmodule libyasm/module.in Mkfiles/Makefile.flat
|
|
|
|
x86insn_nasm.gperf x86insn_gas.gperf x86insns.c: modules/arch/x86/gen_x86_insn.py
|
|
# ignore error in case python is not installed
|
|
-python modules/arch/x86/gen_x86_insn.py
|
|
|
|
x86insn_nasm.c: x86insn_nasm.gperf genperf
|
|
./genperf x86insn_nasm.gperf $@
|
|
|
|
x86insn_gas.c: x86insn_gas.gperf genperf
|
|
./genperf x86insn_gas.gperf $@
|
|
|
|
x86cpu.c: modules/arch/x86/x86cpu.gperf genperf
|
|
./genperf modules/arch/x86/x86cpu.gperf $@
|
|
|
|
x86regtmod.c: modules/arch/x86/x86regtmod.gperf genperf
|
|
./genperf modules/arch/x86/x86regtmod.gperf $@
|
|
|
|
modules/arch/x86/x86id.c: x86insn_nasm.c x86insn_gas.c x86insns.c
|
|
|
|
lc3bid.c: modules/arch/lc3b/lc3bid.re re2c
|
|
./re2c -s -o $@ modules/arch/lc3b/lc3bid.re
|
|
|
|
gas-token.c: modules/parsers/gas/gas-token.re re2c
|
|
./re2c -b -o $@ modules/parsers/gas/gas-token.re
|
|
|
|
nasm-token.c: modules/parsers/nasm/nasm-token.re re2c
|
|
./re2c -b -o $@ modules/parsers/nasm/nasm-token.re
|
|
|
|
RE2C_SRCS= \
|
|
tools/re2c/main.c \
|
|
tools/re2c/code.c \
|
|
tools/re2c/dfa.c \
|
|
tools/re2c/parser.c \
|
|
tools/re2c/actions.c \
|
|
tools/re2c/scanner.c \
|
|
tools/re2c/mbo_getopt.c \
|
|
tools/re2c/substr.c \
|
|
tools/re2c/translate.c
|
|
|
|
re2c: $(RE2C_SRCS)
|
|
$(BUILDCC) -I. -o re2c $(RE2C_SRCS)
|
|
|
|
GENPERF_SRCS= \
|
|
tools/genperf/genperf.c \
|
|
tools/genperf/perfect.c \
|
|
libyasm/phash.c \
|
|
libyasm/xmalloc.c \
|
|
libyasm/xstrdup.c
|
|
|
|
genperf: $(GENPERF_SRCS)
|
|
$(BUILDCC) -I. -o genperf $(GENPERF_SRCS)
|
|
|
|
yasm: $(YASM_OBJS)
|
|
$(CC) -o yasm $(YASM_OBJS)
|
|
|
|
ytasm: $(YTASM_OBJS)
|
|
$(CC) -o ytasm $(YTASM_OBJS)
|
|
|
|
vsyasm: $(VSYASM_OBJS)
|
|
$(CC) -o vsyasm $(VSYASM_OBJS)
|
|
|
|
.c.o:
|
|
$(CC) -c $(CFLAGS) -o $@ $<
|
|
|
|
$(YASM_OBJS) $(YTASM_OBJS) $(VSYASM_OBJS): YASM-VERSION.h
|
|
|
|
YASM-VERSION.h: YASM-VERSION-GEN.sh
|
|
sh YASM-VERSION-GEN.sh
|
|
|