vrtc / honeydew (public) (License: CC0) (since 2023-12-20) (hash sha1)
Warcraft 3: The Frozen Throne 1.27 custom scenario.
List of commits:
Subject Hash Author Date (UTC)
feat(build)!: compatible with POSIX make 214594fd9b7318cfb1091f8d98cd515628c82049 Vladyslav Bondarenko 2024-04-13 03:46:12
fix(build): add compatibility with om4 59019ee20d63de398b3868102d6b9f3e2e333e79 Vladyslav Bondarenko 2024-04-12 23:10:52
feat(build)!: improve preprocessor 9d209572cdfc91684ec8fe9ed97554520d15563b Vladyslav Bondarenko 2024-04-12 18:05:52
feat(build): add tags file to .gitignore aa3f348f818b70017c7665187216cf7be25ca211 Vladyslav Bondarenko 2024-04-12 18:03:13
release: prepare nightly release 0.1.1-WIP db2b234fe6bb59c2e26051a46a6297f0cd2d6115 Vladyslav Bondarenko 2024-01-09 07:55:15
build: execute Makefile from any directory 336dad73fd1697f779956425932c895de4da3fbc Vladyslav Bondarenko 2024-01-09 07:43:59
feat: Arcane Lance accounts for elevation 6404e31c56eb7641ee6d1c803f08c5ef2a63e474 Vladyslav Bondarenko 2024-01-08 20:06:27
test: add flying mock enemies 4956494d8189eb5d716a441ae1607eea0384981e Vladyslav Bondarenko 2024-01-08 20:05:50
fix: Arcane Lance spell cast end correctly d3f84de36f1d01eb647af7ebc431f83fe87ac201 Vladyslav Bondarenko 2024-01-08 19:49:22
feat: channeling Arcane Blast displays graphics 3fc870ec0aa19e4b5ee6f99fa4a30a226598c0d0 Vladyslav Bondarenko 2024-01-08 19:01:07
doc: add Arcane Lance issue note cbeb0f649f523d3049bb1d9ffa7eeb8595c2f387 Vladyslav Bondarenko 2024-01-08 19:00:48
test: add additional mock heroes dd59587d7e110975d901bb1294d01eb702e46039 Vladyslav Bondarenko 2024-01-08 18:59:33
doc: add Arcane Lance issue note 2ea8eff1b2fa0b0123c387ad09a40afef0717337 Vladyslav Bondarenko 2024-01-08 18:59:12
doc: add issue d64841d9821a6925327b090574744271b048d0d0 Vladyslav Bondarenko 2024-01-05 17:01:07
feat: spell Attunement leaves battle scarring c3458ede56c8b85d6580851fa38a0c726ee5eb7c Vladyslav Bondarenko 2024-01-05 16:36:58
feat: spell Arcane Lance displays beam graphics e40bf803cc04cae231295a04a277480ad3acff19 Vladyslav Bondarenko 2024-01-05 15:24:10
fix: spell Attunement uses ability id for effects 93f15ee614ce5958f2a52a8fbc336c8938b40b09 Vladyslav Bondarenko 2023-12-27 08:57:29
feat!: add spell Arcane Lance base e164d3c3f3f69230dbb9b1e5045c551f5870337d Vladyslav Bondarenko 2023-12-23 23:23:58
nightly: 0.1-WIP c97814a5f138ed20958a7a1f88f5c2c6a2081906 Vladyslav Bondarenko 2023-12-22 04:08:33
doc: add note to self about computer users 40c8b325bce404489c03ab0a8db90cadbc008ae3 Vladyslav Bondarenko 2023-12-22 04:05:26
Commit 214594fd9b7318cfb1091f8d98cd515628c82049 - feat(build)!: compatible with POSIX make
Improve portability, by reducing the set of features used by `make`.
Test it with both `pdpmake` and `gmake`.
Author: Vladyslav Bondarenko
Author date (UTC): 2024-04-13 03:46
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2024-04-13 03:47
Parent(s): 59019ee20d63de398b3868102d6b9f3e2e333e79
Signer:
Signing key: EFF9624877D25D02
Signing status: E
Tree: 33a7e4846b48ac89245a6303e23eebe4022574db
File Lines added Lines deleted
.gitignore 3 0
Makefile 0 81
README.adoc 15 10
doc/build.adoc 224 0
doc/build.md 0 149
honeydew.w3x 0 0
makefile 84 0
src/src.mk 0 0
test/Makefile 0 1
File .gitignore changed (mode: 100644) (index faf08f7..a3f6965)
5 5 *~ *~
6 6 Makefile.config Makefile.config
7 7 TAGS TAGS
8 local.mk
9 local/
10 local/*
8 11 tags tags
9 12 target/* target/*
10 13 war3map.j war3map.j
File Makefile deleted (index cb5f5dd..0000000)
1 NAME=honeydew
2 VERSION=0.1.2-WIP
3 CLASSIFIER=1.27
4 LANG=en
5
6 NAMEFULL=$(NAME)-$(VERSION)-$(CLASSIFIER)-$(LANG)
7 NAMEASSEMBLY=$(NAME)-$(VERSION)-project
8
9 SHELL=/bin/sh
10 .SUFFIXES:
11
12 BUILDDIR=target
13 srcdir=.
14
15 .PRECIOUS: *.w3x *.w3m *.w3n
16 .PHONY: clean distclean dist run check all $(BUILDDIR)/$(NAMEASSEMBLY).zip
17
18 GIT=git
19 GPG=gpg
20 SMPQ=smpq
21
22 M4=m4
23 M4FLAGS=-I "$(srcdir)" -E
24
25 PJASS=pjass
26 PJASSFLAGS="$(srcdir)/etc/common.j" "$(srcdir)/etc/Blizzard.j" -rb +filter +shadow +checkglobalsinit +checkstringhash
27 SNIPPETS=$(wildcard $(srcdir)/src/*.j)
28
29 WAR3EXE=Frozen\ Throne.exe
30 # TODO add configurable map path for testing
31 MAPSDIR="Maps/$(NAME)/"
32
33 #vpath *.j src:$(BUILDDIR)
34
35 include $(srcdir)/src/Makefile
36 sinclude $(srcdir)/Makefile.config
37 TESTS=
38 sinclude $(srcdir)/test/Makefile
39
40 all: $(BUILDDIR)/$(NAMEFULL).w3x $(BUILDDIR)/war3map.j | $(BUILDDIR)
41 $(PJASS) $(PJASSFLAGS) "$(BUILDDIR)/war3map.j"
42 cd "$(BUILDDIR)" && \
43 $(SMPQ) --append --overwrite "$(NAMEFULL).w3x" "war3map.j" && \
44 $(SMPQ) --list "$(NAMEFULL).w3x"
45
46 dist: $(BUILDDIR)/$(NAMEASSEMBLY).zip $(BUILDDIR)/$(NAMEASSEMBLY).zip.sig | $(BUILDDIR)
47
48 install: all
49 cp "$(BUILDDIR)/$(NAMEFULL).w3x" "$(DESTDIR)"
50
51 $(BUILDDIR)/$(NAMEFULL).w3x: $(srcdir)/$(NAME).w3x | $(BUILDDIR)
52 cp "$(srcdir)/$(NAME).w3x" "$(BUILDDIR)/$(NAMEFULL).w3x"
53
54 $(BUILDDIR):
55 mkdir "$@"
56
57 check: $(SNIPPETS) $(TESTS)
58 $(PJASS) $(PJASSFLAGS) $^
59
60 # All `m4` sources must be loaded before all `Jass` sources.
61 # Source file `jass_globals.m4` must be loaded after all other `m4` sources and
62 # before all `Jass` sources.
63 $(BUILDDIR)/war3map.j: $(srcdir)/src/jass_module.m4 $(srcdir)/src/jass_globals.m4 $(SNIPPETS) $(TESTS) | $(BUILDDIR) check
64 $(M4) $(M4FLAGS) $^ > "$@"
65
66 $(BUILDDIR)/$(NAMEASSEMBLY).zip: | $(BUILDDIR)
67 $(GIT) archive --format zip --output "$@" --prefix "$(NAME)-$(VERSION)/" HEAD
68
69 $(BUILDDIR)/$(NAMEASSEMBLY).zip.sig: $(BUILDDIR)/$(NAMEASSEMBLY).zip
70 $(GPG) --detach-sign --yes $^
71
72 clean:
73 $(GIT) clean -i -x "$(BUILDDIR)"
74
75 distclean:
76 $(GIT) clean -i -x "$(srcdir)"
77
78 run: all
79 # Path to the map relative to data directory (game installation directory in almost every case).
80 # Must be given exact file name. Wildcards or tokens will not be expanded.
81 $(WAR3EXE) -loadfile "Maps/${NAME}/${NAMEFULL}.w3x"
File README.adoc renamed from README.md (similarity 73%) (mode: 100644) (index eca50c7..6672e4b)
1 # honeydew
1 = honeydew
2 Vladyslav Bondarenko <vladyslavbond@pm.me>
3 0.1.3WIP, 2024-04-13
2 4
3 5 This is a custom scenario for an old computer game WarCraft 3: The Frozen This is a custom scenario for an old computer game WarCraft 3: The Frozen
4 6 Throne, made by fan community of modders. Throne, made by fan community of modders.
5 7
6 8 The only supported version of the game is 1.27. The only supported version of the game is 1.27.
7 9
8 ## Players
10 == Players
9 11
10 12 Players should only be interested in the map archive file, recognizeable by the Players should only be interested in the map archive file, recognizeable by the
11 13 file extension `*.w3x`. This repository contains scripts that are used to file extension `*.w3x`. This repository contains scripts that are used to
 
... ... The complete scenario that is ready to be played or tested should be found
16 18 naturally on fan websites. This repository and instructions it contains are naturally on fan websites. This repository and instructions it contains are
17 19 aimed at developers first. aimed at developers first.
18 20
19 ## Developers
21 == Developers
20 22
21 TODO add detailed build instructions
22
23 Instructions on how to build the project are contained in `doc/build.md` text
23 Instructions on how to build the project are contained in `doc/build.adoc` text
24 24 file. Beside the original game itself (patch 1.27), required tools include: file. Beside the original game itself (patch 1.27), required tools include:
25 25 `git`, `pjass`, `m4`, `smpq`, `make`. `git`, `pjass`, `m4`, `smpq`, `make`.
26 26
 
... ... Source scripts for custom spells and other Jass utilities are under `src/`
28 28 directory. Most of these may be easily exported to other projects, without directory. Most of these may be easily exported to other projects, without
29 29 understanding the whole build process. understanding the whole build process.
30 30
31 ## Copying
31 Useful `m4` macros may also be found under `src/` directory.
32
33 include::doc/build.adoc[honeydew build instructions]
34
35 == Copying
32 36
33 37 Everyone is free to use, modify or share this project. Text file `COPYING.txt` Everyone is free to use, modify or share this project. Text file `COPYING.txt`
34 38 contains more details on the mode in which this project is shared. contains more details on the mode in which this project is shared.
35 39
36 ## Authors
40 == Authors
37 41
38 42 Text file `AUTHORS.txt` contains list of contributions that were made Text file `AUTHORS.txt` contains list of contributions that were made
39 explicitly for this project alone. Tools and experience employed are outside of
40 it's scope, and are tracked entirely separately in their respective projects.
43 *explicitly* for this project alone. Tools and experience that were relied upon
44 during development are outside of it's scope, and are tracked entirely
45 separately in their respective projects.
File doc/build.adoc added (mode: 100644) (index 0000000..7f7d3c4)
1 == honeydew build instructions
2
3 === Motivation
4
5 The purpose of the custom build process is to aid script developer convenience
6 and add some advanced development features. Specifically, macro preprocessor,
7 dependency management, detailed error messages, automated packaging,
8 versioning. Also planned for eventual implementation are globalization and
9 semi-automated testing.
10
11 Most of the major features were implemented in the past by Word Editor
12 modifications, like Jass New Gen Pack or vjass. Instead of implementing a
13 custom integrated solution, this project relies much more on free generic
14 software development tools.
15
16 === Dependencies
17
18 .List of build tools
19 * `make` build orchestration tool;
20 * `sh` used by `make` to execute commands on the operating system;
21 * `m4` generic macro preprocessor, used to process source files;
22 * `git` employed for versioning, development history and distribution;
23 * `pjass` source code validation tool;
24 * `smpq` MPQ archiver that only features command-line interface;
25
26 * `jasstags` (optional, not required for the build) for developers that use
27 `vim` or `emacs` text processors https://gitlab.com/vladyslavbond/jasstags
28
29 ==== Windows
30
31 To build this project on Windows advanced user knowledge is required.
32 Contributions to the instructions are welcome. Obviously, the resulting map
33 archive file must work in game regardless of the underlying operating system.
34
35 .Useful options for Windows
36 * `Git Bash` for Windows https://gitforwindows.org/
37 * `busybox` for Windows https://frippery.org/busybox/index.html
38 * `m4` for Windows https://gnuwin32.sourceforge.net/packages/m4.htm
39 * `GNU make` for Windows https://gnuwin32.sourceforge.net/packages/make.htm
40 * `pjass` is readily available for Windows bundled with community tools like
41 `JNGP` or bundled with the latest versions of the game itself
42 https://github.com/lep/pjass https://jass.sourceforge.net/
43
44 `Git Bash` provides `sh` and `git`.
45
46 `busybox` provides `sh` and conditionally `make`, specifically `pdpmake`.
47 Alternatively, a port of `GNU` `make` (`gmake`) may be installed.
48
49 A port of `GNU m4` is probably the easiest implementation of `m4` to install.
50
51 As of version 0.1.3, the project build was tested with `gmake`, `pdpmake`, `m4`
52 and `om4`, with highest compatibility settings possible. Therefore, most tools
53 that claim to implement `make` or `m4` should work.
54
55 `smpq` was not tested outside Debian. Supposedly, the following release should
56 work for Windows. https://launchpad.net/smpq
57
58 `smpq` may be effectively replaced by any of the MPQ editors for Windows that
59 support command-line arguments. The problem then is in patching the project's
60 `makefile` to employ different command argument order.
61
62 ==== Debian 12 (bullseye)
63
64 ----
65 apt-get install git m4 make smpq
66 ----
67
68 Most importantly, it requires `pjass`. Some distributions of the game may bundle
69 `pjass`.
70
71 Upstream `pjass` repository may be found here:
72
73 https://github.com/lep/pjass
74
75 The upstream version will likely require compilation to be installed. `pjass`
76 is written in *C* and depends on `GNU make` and `bison`.
77
78 Alternatively, a fork of `pjass` with Debian 12 packaging may be found here:
79
80 https://rocketgit.com/user/vrtc/pjass
81
82 ==== Build
83
84 After the map is saved in the World Editor, the World Editor will remove all
85 the patches this project makes to the map archive file. Therefore, the map will
86 become unplayable.
87
88 To make the scripts work, this build process must be followed. Every time
89 updates to terrain or objects need to be saved, the build process for scripts
90 must be repeated again, to make sure the map archive file is patched correctly.
91
92 The only supported version of the game is 1.27. It may work on some slightly
93 older or slightly newer versions.
94
95 In an ideal world, simply executing the `Makefile` should produce a valid map
96 archive file. The instructions assume that the current directory is the
97 project's root, that is base directory, that is sources directory (`srcdir`).
98
99 The following command should update the map archive file `honeydew.w3x` with
100 latest changes to the source files in `${srcdir}/src/` directory.
101
102 ----
103 make
104 ----
105
106 Check Jass script snippets for validity. This does not necessarily require the
107 game installed, only `pjass`, `m4` and `make`.
108
109 ----
110 make check
111 ----
112
113 Build playable map archive file. This requires `pjass`, `m4`, `make` and
114 `smpq`. This is synonymous with just calling `make`.
115
116 Initially, it loads `m4` macros. Then, it processes every `Jass` source file
117 and produces a `war3map.j` file. `pjass` validates the sources every step.
118 Finally, the map MPQ archive `*.w3x` is patched using `smpq` with the produced
119 `war3map.j` script.
120
121 ----
122 make all
123 ----
124
125 Assemble a distribution zip package, that contains the playable map and all the
126 sources needed to rebuild it. This requires all of the above and `git`. This
127 only works with a valid `git` repository and only on committed files.
128
129 ----
130 make dist
131 ----
132
133 Test the map in the game.
134
135 This requires the game to be installed. Additionally, this requires the
136 developer to supply additional settings to the build tool. See advanced build
137 options.
138
139 ----
140 make run
141 ----
142
143 Copy the map archive to the game data directory (Maps/), so that it can be
144 played. See advanced build options.
145
146 ----
147 make install
148 ----
149
150 Build and run the map with development stage test scripts. See advanced build
151 options for details.
152
153 ----
154 make TESTS=test/test.j run
155 ----
156
157 ===== Advanced build options
158
159 The following `make` tasks should help troubleshooting. Generally, the project
160 aims to to follow GNU `make` convetions whenever possible.
161
162 At least basic knowledge of `make` is required. Any flavour should be
163 applicable.
164
165 Optionally, create a build directory and change into it. The directory may be a
166 mounted temporary file system to spare the hard drive and loading time.
167
168 ----
169 mkdir -p target/
170 cd target/
171 ----
172
173 Then, redefine the necessary variables to allow the build tool to navigate
174 correctly. Choose one of the methods.
175
176 First, using command line arguments.
177
178 `${HOME}/honeydew/` is the example source directory.
179
180 WARNING: Trailing slashes are *mandatory*.
181
182 ----
183 make -f ${HOME}/honeydew/makefile srcidr=${HOME}/honeydew/ DESTDIR=${HOME}/games/warcraft3/ datadir=Maps/
184 ----
185
186 Second, using a *local* `makefile`. Create and save a text file with your local
187 settings and load it after the primary `makefile`.
188
189 local.mk:
190
191 ----
192 srcidr=/home/myuser/honeydew/
193 DESTDIR=/home/myuser/games/warcraft3/
194 datadir=Maps/
195 WAR3EXE=wine64 ~/local/share/wine-devel/drive_c/games/warcraft3-1.27/Frozen\ Throne.exe -opengl -window
196 ----
197
198 ----
199 make -f ${HOME}/honeydew/makefile -f local.mk
200 ----
201
202 `srcdir` is the absolute path (preferably) to the project's source directory. Usually where `git` repository was cloned to.
203
204 `DESTDIR` is the absolute path to game installation directory.
205
206 `datadir` is a *relative* path to game installation directory, where maps will
207 be installed to.
208
209 `WAR3EXE` is a command to run the game itself. `make` task will append to it
210 the path to the map archive to load, constructed with other variables.
211
212 To enable tests, list test source files like this. The test source files will
213 be included in the build process and will affect the runtime (gameplay).
214
215 The game calls `function` `test_init` from `main.j:function init`, to
216 initialize all tests at runtime. The function `test_init` must take no
217 arguments and return no values.
218
219 `TESTS` variable (macro) is a list of source files that must be included to
220 test the map in game. As of 0.1.3, only one test case is provided.
221
222 ----
223 TESTS=${srcdir}/test/test.j
224 ----
File doc/build.md deleted (index 752d2be..0000000)
1 # honeydew build instructions
2
3 ## Motivation
4
5 The purpose of the custom build process is to aid script developer convenience
6 and add some advanced development features. Specifically, macro preprocessor,
7 dependency management, detailed error messages, automated packaging,
8 versioning. Also planned for eventual implementation are globalization and
9 semi-automated testing.
10
11 Most of the major features were implemented in the past by Word Editor
12 modifications, like Jass New Gen Pack or vjass. Instead of implementing a
13 custom integrated solution, this project relies much more on free generic
14 software development tools.
15
16 ## Dependencies
17
18 ### Windows
19
20 To build this project on Windows advanced user knowledge is required.
21 Contributions to the instructions are welcome. Obviously, the resulting map
22 archive file must work in game regardless of the underlying operating system.
23
24 Most likely, at least Windows `Git Bash` will be required. First to install
25 `git`, second to install UNIX-like shell, that is required for `make` to work.
26
27 `make` and `m4` should be easy to install after that, as they are popular
28 tools.
29
30 `smpq` is much more obscure. It may require some more effort to install.
31
32 `smpq` may be effectively replaced by any of the MPQ editors for Windows that
33 support command-line arguments. The problem then is in patching the project's
34 "`Makefile`" to employ different command argument order. Users are on their own
35 here.
36
37 ### Debian 12 (bullseye)
38
39 ```
40 apt-get install git m4 make smpq
41 ```
42
43 Most importantly, it requires `pjass`. Some distributions of the game may bundle
44 `pjass`.
45
46 Upstream `pjass` repository may be found here:
47
48 https://github.com/lep/pjass
49
50 Fork of `pjass` with Debian 12 packaging may be found here:
51
52 https://rocketgit.com/user/vrtc/pjass
53
54 ## Build
55
56 ### Build summary
57
58 After the map is saved in the World Editor, the World Editor will remove all
59 the patches this project makes to the map archive file. Therefore, the map will
60 become unplayable.
61
62 To make the scripts work, this build process must be followed. Every time
63 updates to terrain or objects need to be saved, the build process for scripts
64 must be repeated again, to make sure the map archive file is patched correctly.
65
66 The only supported version of the game is 1.27. It may work on some slightly
67 older or slightly newer versions.
68
69 In an ideal world, simply executing the "`Makefile`" should produce a valid map
70 archive file. The instructions assume that the current directory is the
71 project's root, that is base directory, that is sources directory ("`srcdir`").
72
73 ```
74 make
75 ```
76
77 ### Build details
78
79 The following make tasks should help troubleshooting. Generally, the project
80 aims to to follow GNU `make` convetions whenever possible.
81
82 Ensure that the build directory exists. By default, the build directory is set
83 to "target".
84
85 ```
86 mkdir -p target/
87 ```
88
89 The build directory may be overriden like this, for every `make` invocation.
90
91 ```
92 make BUILDDIR=/home/myuser/mybuilddir/
93 ```
94
95 Similarly, the project base directory, or sources directory, may be overriden
96 like this. Then the "`Makefile`" location must be explicitly specified as well.
97 Overriding build and sources directory may be convenient for setting up
98 development environment or packaging.
99
100 ```
101 make -f /home/myuser/mysrcdir/Makefile srcdir=/home/myuser/mysrcdir/
102 ```
103
104 Check Jass script snippets for validity. This does not necessarily require the
105 game installed, only `pjass`, `m4` and `make`.
106
107 ```
108 make check
109 ```
110
111 Build playable map archive file. This requires `pjass`, `m4`, `make` and
112 `smpq`.
113
114 ```
115 make all
116 ```
117
118 Assemble a distribution zip package, that contains the playable map and all the
119 sources needed to rebuild it. This requires all of the above and `git`.
120
121 ```
122 make dist
123 ```
124
125 Test the map in the game.
126
127 ```
128 make run
129 ```
130
131 This requires the game to be installed. Additionally, this requires the
132 developer to create a local "`Makefile.config`" that is not commited to the
133 project's repository. Makefile.config must be placed in the same directory as
134 the "`Makefile`" (normally under `srcdir`).
135
136 Example "`Makefile.config`".
137
138 ```
139 WAR3EXE=wine64 ~/local/share/wine-devel/drive_c/games/warcraft3-1.27/Frozen\ Throne.exe -opengl -window
140 ```
141
142 Build and run the map with development stage test scripts.
143
144 ```
145 make TESTS=test/test.j run
146 ```
147
148 The Jass snippet "`test/test.j`" must exist. The snippet must define "`function
149 test_init`", that is called from "`src/main.j:function main`".
File honeydew.w3x changed (mode: 100644) (index c994f20..db43366)
File makefile added (mode: 100644) (index 0000000..a01629b)
1 .POSIX:
2 # Allow file paths and not just file names.
3 .PRAGMA: target_name
4
5 NAME=honeydew
6 VERSION=0.1.3WIP
7 CLASSIFIER=1.27
8 LANG=en
9
10 NAMEFULL=$(NAME)_$(VERSION)_$(CLASSIFIER)_$(LANG)
11 NAMEASSEMBLY=$(NAME)_$(VERSION)_project
12
13 SHELL=/bin/sh
14
15 srcdir=./
16
17 GIT=git
18 GITFLAGS=--git-dir=${srcdir}/.git/
19
20 GPG=gpg
21 SMPQ=smpq
22
23 M4=m4
24 M4FLAGS=-I "$(srcdir)" -E
25
26 PJASS=pjass
27 PJASSFLAGS="$(srcdir)/etc/common.j" "$(srcdir)/etc/Blizzard.j" -rb +filter +shadow +checkglobalsinit +checkstringhash
28 SNIPPETS=$(wildcard $(srcdir)/src/*.j)
29
30 # TODO add configurable map path for testing
31 datadir=Maps/
32
33 WAR3EXE=Frozen\ Throne.exe
34
35 include $(srcdir)/src/src.mk
36
37 all: check $(NAME).w3x war3map.j
38
39 $(NAME).w3x: war3map.j
40 test ! -f $@ && cp $(srcdir)/$(NAME).w3x $@
41 $(SMPQ) --append --overwrite "$@" war3map.j && \
42 $(SMPQ) --list "$@"
43
44 dist: $(NAME).w3x $(NAMEASSEMBLY).zip $(NAMEASSEMBLY).zip.sig
45
46 install: $(NAME).w3x
47 cp $(NAME).w3x $(DESTDIR)/$(datadir)/$(NAME).w3x
48
49 check: war3map.j
50 $(PJASS) $(PJASSFLAGS) war3map.j
51
52 tags:
53 ctags --recurse ${srcdir}
54
55 # All `m4` sources must be loaded before all `Jass` sources.
56 # Source file `jass_globals.m4` must be loaded after all other `m4` sources and
57 # before all `Jass` sources.
58 war3map.j: $(srcdir)/src/jass_module.m4 $(srcdir)/src/jass_globals.m4 $(SNIPPETS) $(TESTS)
59 $(PJASS) $(PJASSFLAGS) $(SNIPPETS) $(TESTS)
60 $(M4) $(M4FLAGS) $(srcdir)/src/jass_module.m4 $(srcdir)/src/jass_globals.m4 $(SNIPPETS) $(TESTS) > $@
61 $(PJASS) $(PJASSFLAGS) $@
62
63 $(NAMEASSEMBLY).zip:
64 $(GIT) $(GITFLAGS) archive --format zip --output "$@" --prefix "$(NAME)-$(VERSION)/" HEAD
65
66 $(NAMEASSEMBLY).zip.sig: $(NAMEASSEMBLY).zip
67 $(GPG) --detach-sign --yes --output $@ $(NAMEASSEMBLY).zip
68
69 clean:
70 $(GIT) clean -i -x
71
72 distclean:
73 $(GIT) clean -i -x "$(srcdir)"
74
75 # Path to the map relative to data directory (game installation directory in
76 # almost every case). Must be given exact file name. Wildcards or tokens will
77 # not be expanded.
78 #
79 # A valid path looks like this "Maps/Test/WorldEditTestMap.w3x". It is always relative to the
80 # game installation directory.
81 #
82 run: all
83 test ! -f ${DESTDIR}/${datadir}/${NAME}.w3x && cp $(NAME).w3x ${DESTDIR}/${datadir}/${NAME}.w3x
84 $(WAR3EXE) -loadfile "${datadir}${NAME}.w3x"
File src/src.mk renamed from src/Makefile (similarity 100%)
File test/Makefile deleted (index 5b474b1..0000000)
1 TESTS=$(srcdir)/test/test.j
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/honeydew

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/honeydew

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/honeydew

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main