Merge pull request #1317 from xexyl/1992-ant
This commit is contained in:
6 files changed
+55
-26
No files matched your search
+18
-10
@@ -113,7 +113,7 @@ PROG= ${ENTRY}
|
|||||||
#
|
#
|
||||||
OBJ= ${PROG}.o
|
OBJ= ${PROG}.o
|
||||||
DATA=
|
DATA=
|
||||||
TARGET= ${PROG} am
|
TARGET= ${PROG}
|
||||||
#
|
#
|
||||||
ALT_OBJ=
|
ALT_OBJ=
|
||||||
ALT_TARGET=
|
ALT_TARGET=
|
||||||
@@ -129,15 +129,18 @@ all: data ${TARGET}
|
|||||||
.PHONY: all alt data everything diff_orig_prog diff_prog_orig \
|
.PHONY: all alt data everything diff_orig_prog diff_prog_orig \
|
||||||
diff_alt_prog diff_prog_alt diff_orig_alt diff_alt_orig \
|
diff_alt_prog diff_prog_alt diff_orig_alt diff_alt_orig \
|
||||||
clean clobber install love haste waste maker easter_egg \
|
clean clobber install love haste waste maker easter_egg \
|
||||||
sandwich supernova deep_magic magic charon pluto
|
sandwich supernova deep_magic magic charon pluto \
|
||||||
supernova deep_magic magic charon pluto
|
supernova deep_magic magic charon pluto
|
||||||
|
|
||||||
${PROG}: ${PROG}.c
|
${PROG}: ${PROG}.c
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
||||||
|
|
||||||
am: ${PROG}
|
am: ant
|
||||||
${RM} -f $@
|
rm -f am
|
||||||
${LN} $< $@
|
ln ant am
|
||||||
|
cp am am.safe
|
||||||
|
cp am.safe am
|
||||||
|
rm -f am.safe
|
||||||
|
|
||||||
# alternative executable
|
# alternative executable
|
||||||
#
|
#
|
||||||
@@ -215,11 +218,16 @@ clobber: clean
|
|||||||
echo 'ate sandwich'; \
|
echo 'ate sandwich'; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
am_clobber: clean am
|
am_clean:
|
||||||
${RM} -f am.safe
|
rm -f ant.o am.o
|
||||||
${CP} am am.safe
|
@-if [ -f indent.c ]; then \
|
||||||
${CP} am.safe am
|
echo ${RM} -f indent.c; \
|
||||||
${RM} -f am.safe
|
${RM} -f indent.c; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
am_clobber: am_clean
|
||||||
|
rm -f am.safe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@echo "Dr. Spock says that is not logical!"
|
@echo "Dr. Spock says that is not logical!"
|
||||||
|
|||||||
+8
-7
@@ -8,7 +8,7 @@ make all
|
|||||||
## To use:
|
## To use:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./am Makefile
|
./ant Makefile
|
||||||
```
|
```
|
||||||
|
|
||||||
where `Makefile` is a Makefile to use.
|
where `Makefile` is a Makefile to use.
|
||||||
@@ -16,16 +16,17 @@ where `Makefile` is a Makefile to use.
|
|||||||
|
|
||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
|
First build the tool itself with our Makefile:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./ant ant.test.mk
|
./ant Makefile am
|
||||||
```
|
```
|
||||||
|
|
||||||
We also suggest that you try:
|
Now use `am` to do some things:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make am
|
|
||||||
./am Makefile am_clobber # clobber everything except am
|
./am Makefile am_clobber # clobber everything except am
|
||||||
./am Makefile all
|
./am ant.test.mk # run the test Makefile with am
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -34,8 +35,8 @@ make am
|
|||||||
Like much of POSIX, obfuscation has its place. Your task is to
|
Like much of POSIX, obfuscation has its place. Your task is to
|
||||||
figure out where.
|
figure out where.
|
||||||
|
|
||||||
This entry comes complete with a Posix-like command description.
|
This entry comes complete with a POSIX-like command description.
|
||||||
Interested POSIX balloters should lobby the IEEE for an obfuscated\
|
Interested POSIX balloters should lobby the IEEE for an obfuscated
|
||||||
P1003 subcommittee.
|
P1003 subcommittee.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -35,7 +35,7 @@ None.
|
|||||||
|
|
||||||
OPERANDS
|
OPERANDS
|
||||||
|
|
||||||
makefile This required argument, is a pathname of a description
|
makefile This required argument is a pathname of a description
|
||||||
file, which is also referred to as the "makfile". A
|
file, which is also referred to as the "makfile". A
|
||||||
pathname of "-", shall *NOT* denote the standard input.
|
pathname of "-", shall *NOT* denote the standard input.
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ MAKEFILE EXECUTION
|
|||||||
Command lines shall be processed one at a time by writing the command
|
Command lines shall be processed one at a time by writing the command
|
||||||
line to standard output, unless prefixed with an at-sign (@), and
|
line to standard output, unless prefixed with an at-sign (@), and
|
||||||
executing the command(s) in the line. Commands shall be executed by
|
executing the command(s) in the line. Commands shall be executed by
|
||||||
passing the command line to the command interpreter via the system()
|
passing the command line to the command interpreter via the system(3)
|
||||||
function.
|
function.
|
||||||
|
|
||||||
The environment for the command being executed shall contain all of the
|
The environment for the command being executed shall contain all of the
|
||||||
@@ -168,7 +168,7 @@ rules for the same target are ignored. There is *no* support for
|
|||||||
adding prerequisites to a target's prerequisite list once a target
|
adding prerequisites to a target's prerequisite list once a target
|
||||||
rule is defined.
|
rule is defined.
|
||||||
|
|
||||||
There are no special targets or inference rule support.
|
There are no special targets and no inference rule support.
|
||||||
|
|
||||||
|
|
||||||
MACROS
|
MACROS
|
||||||
@@ -191,7 +191,7 @@ the definition of environment variables, excluding parentheses, ( and ),
|
|||||||
which are used for delimiters.
|
which are used for delimiters.
|
||||||
|
|
||||||
Macros can appear anywhere in the makefile, except within other macro
|
Macros can appear anywhere in the makefile, except within other macro
|
||||||
references (ie. no nesting). Macros in target and command lines shall
|
references (i.e. no nesting). Macros in target and command lines shall
|
||||||
be evaluated when the line is read. Macros in macro definition lines
|
be evaluated when the line is read. Macros in macro definition lines
|
||||||
shall be evaluated *IMMEDIATELY*. A macro that has not been defined
|
shall be evaluated *IMMEDIATELY*. A macro that has not been defined
|
||||||
shall evaluate to a null string without causing any error condition.
|
shall evaluate to a null string without causing any error condition.
|
||||||
@@ -233,7 +233,7 @@ tested on
|
|||||||
|
|
||||||
For all machines, the compile command line should be
|
For all machines, the compile command line should be
|
||||||
|
|
||||||
cc -O -o am am.c
|
cc -O -o ant ant.c
|
||||||
|
|
||||||
The value RULES represents the number of slots available to record
|
The value RULES represents the number of slots available to record
|
||||||
target rules, dependencies, and commands. The default value chosen
|
target rules, dependencies, and commands. The default value chosen
|
||||||
@@ -261,9 +261,9 @@ REFERENCES
|
|||||||
|
|
||||||
FILES
|
FILES
|
||||||
|
|
||||||
howe.c Obfuscated source
|
ant.c Obfuscated source
|
||||||
howe.README Manual for AM
|
ant.README Manual for AM
|
||||||
howe.test.mk Test makefile
|
ant.test.mk Test makefile
|
||||||
|
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#ifndef RULES
|
#ifndef RULES
|
||||||
#define RULES 500
|
#define RULES 500
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ error.1:
|
|||||||
# Target where dependency does not exist.
|
# Target where dependency does not exist.
|
||||||
error.2: unknown
|
error.2: unknown
|
||||||
|
|
||||||
# Receipe command causes error.
|
# Recipe command causes error.
|
||||||
error.3: t1 fail t2
|
error.3: t1 fail t2
|
||||||
fail:
|
fail:
|
||||||
ls -l unknown
|
ls -l unknown
|
||||||
|
|||||||
@@ -1387,6 +1387,25 @@ Thus Cody's fixed applies to the original entry. The problems were that
|
|||||||
function returning without a value. The function was changed to return void.
|
function returning without a value. The function was changed to return void.
|
||||||
|
|
||||||
|
|
||||||
|
## [1992/ant](1992/ant/ant.c) ([README.md](1992/ant/README.md]))
|
||||||
|
|
||||||
|
Cody fixed the Makefile so that the program will actually work with it (or at
|
||||||
|
least the rule to clobber files and link `am` to `ant`). The issue was that the
|
||||||
|
variables in the Makefile could not be evaluated in the same way as it's not as
|
||||||
|
feature-rich as other implementations of `make`. Thus the use of `${RM}` and
|
||||||
|
`${CP}` were in the respective rules changed to `rm` and `cp`, for two examples.
|
||||||
|
A new rule had to be added as well. The variable situation might be because they
|
||||||
|
are obtained from the root variable Makefile `var.mk` via `include` which the
|
||||||
|
program might not support (this has not been tested, however) and also because
|
||||||
|
it appears that the syntax for this program is to use `$()` rather than `${}`.
|
||||||
|
|
||||||
|
Cody also fixed another problem, unrelated, in the Makefile with the `.PHONY`
|
||||||
|
rule where a line was not ended with a `\` but should have been.
|
||||||
|
|
||||||
|
The author stated that in some systems like DOS with Turbo C, it might be
|
||||||
|
necessary to include `time.h` so Cody did this as well.
|
||||||
|
|
||||||
|
|
||||||
## [1992/buzzard.1](1992/buzzard.1/buzzard.1.c) ([README.md](1992/buzzard.1/README.md))
|
## [1992/buzzard.1](1992/buzzard.1/buzzard.1.c) ([README.md](1992/buzzard.1/README.md))
|
||||||
|
|
||||||
Cody added a check for the right number of args, exiting 1 if not enough (2)
|
Cody added a check for the right number of args, exiting 1 if not enough (2)
|
||||||
|
|||||||
Reference in new issue
Block a user