forked from dasm-assembler/dasm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
130 lines (116 loc) · 4.51 KB
/
Makefile
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
#
# the DASM macro assembler (aka small systems cross assembler)
#
# Copyright (c) 1988-2002 by Matthew Dillon.
# Copyright (c) 1995 by Olaf "Rhialto" Seibert.
# Copyright (c) 2003-2008 by Andrew Davie.
# Copyright (c) 2008 by Peter H. Froehlich.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of 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.
#
# 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 the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Simple hack to build everything, test everything, make a beta
# distribution, or make a real distribution. Default is to just
# build everything. Installation is not implemented yet.
# TODO: need to do documentation stuff as well; don't forget to
# delete automatically generated documentation in clean: below
# just an alias for build really...
all: build-release
@echo "Build complete, use 'make test' to run tests."
# install, currently not implemented
install: build
@echo "Installation not implemented, you're on your own, sorry."
# just run all the tests
test: build-debug
echo "Running tests..."
(cd test; $(MAKE); cd ..)
@echo "Tests were run, but testing is not fully automated yet."
@echo "In other words, don't rely on what you saw too much."
cargo test
# just build everything and copy binaries to trunk/bin/
build-debug:
(cd src; $(MAKE) build-debug; cd ..)
mkdir -p bin
cp target/debug/dasm bin/dasm
cp target/debug/ftohex bin/ftohex
build-release:
(cd src; $(MAKE); cd ..)
mkdir -p bin
cp target/release/dasm bin/dasm
cp target/release/ftohex bin/ftohex
strip bin/dasm
strip bin/ftohex
./stats.sh
# release version to use for archive name
# supply this to make when you run it as
# RELEASE=2.20.12
# on the command line, that's the easiest
# thing to do
RELEASE=unknown-version-number
# architecture for including binaries/executables
# supply this to make when you run it as
# BINARY=osx-ppc or BINARY=beos-x86 or ...
# on the command line, that's the easiest
# thing to do; note that this only affects
# the name of the archive, the binaries
# are always put into a trunk/bin folder
# if left empty, source distribution is assumed...
BINARY=
# binaries
BINS=bin/*
# documentation
DOCS=AUTHORS ChangeLog LICENSE CREDITS NEWS README doc/*
# support files for various machines
MACS=machines/atari2600/* machines/channel-f/*
# source files for dasm and ftohex
SRCS=src/*.h src/*.c src/Makefile # src/TODO? src/HEADER? src/PATCHES?
# test files for dasm and ftohex
TSTS=test/*.asm test/*.bin.ref test/*.hex.ref test/Makefile test/run_tests.sh test/atari2600/Makefile test/atari2600/README test/atari2600/*.asm test/atari2600/*.ref
# other files
OTHS=Makefile
ifeq ($(strip $(BINARY)),)
# source release, no binaries
CONTENTS=$(DOCS) $(MACS) $(SRCS) $(TSTS) $(OTHS)
DIRNAME=dasm-$(RELEASE)
ZIPNAME=dasm-$(RELEASE)
else
# binary release for specific platform
CONTENTS=$(BINS) $(DOCS) $(MACS) $(SRCS) $(TSTS) $(OTHS)
DIRNAME=dasm-$(RELEASE)
ZIPNAME=dasm-$(RELEASE)-$(BINARY)
endif
# create a distribution archive for publication
dist: build
mkdir $(DIRNAME)
cp -p -r --parents $(CONTENTS) $(DIRNAME)
tar cvf - $(DIRNAME) | gzip -9 >$(ZIPNAME).tar.gz
# tar cvf - $(DIRNAME) | bzip2 -9 >$(ZIPNAME).tar.bz2
rm -rf $(DIRNAME)
# prepare a beta release containing source code and tests;
# machine files are included since tests may need them;
# nothing else is in the archive since it is not intended
# for the public, just designated volunteers
beta:
echo "This is an incomplete beta release of the DASM assembler." >README.BETA
echo "The purpose is to identify regressions, nothing more." >>README.BETA
echo "Please do *not* re-distribute this release in any form!" >>README.BETA
echo "Please do *not* distribute binaries derived from it either!" >>README.BETA
-tar zcvf dasm-beta-`date +%F`.tar.gz README.BETA $(MACS) $(OTHS) $(SRCS) $(TSTS)
rm -rf README.BETA
# remove beta archives and bin/ directory created by
# regular build from this Makefile; don't delete the
# "real" distribution archives
clean:
(cd src; $(MAKE) clean; cd ..)
(cd test; $(MAKE) clean; cd ..)
-rm -rf dasm-beta-*.tar.gz bin/