1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
|
# 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 objfmt_elfx32
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
|