Programming Utilities Guide

Source Code Control System (SCCS) Filenames

The syntax of make does not directly permit referencing of prefixes. For most types of files on operating operating system machines, this is acceptable since nearly everyone uses a suffix to distinguish different types of files. SCCS files are the exception. Here, s. precedes the filename part of the complete path name.

To allow make easy access to the prefix s., the symbol ~ is used as an identifier of SCCS files. Hence, .c~.o refers to the rule which transforms an SCCS C language source file into an object file. Specifically, the internal rule is $(GET) $(GFLAGS) $< $(CC) $(CFLAGS) -c $*.c rm -f $*.c .

Thus, ~ appended to any suffix transforms the file search into an SCCS filename search with the actual suffix named by the dot and all characters up to (but not including the tilde symbol.

The following SCCS suffixes are internally defined:

.c~.sh~.C~
.y~.h~.Y~
.l~.f~.L~
.s~

The following rules involving SCCS transformations are internally defined:

.c~:.s~.s:.c~:
.c~.c:.s~.a:.C~.C:
.c~.a:.s~.o:.C~.a:
.c~.o:.sh~:.C~.o:
.y~.c:.sh~.sh:.Y~.C:
.y~.o:.h~.h:.Y~.o:
.y~.y:.f~:.Y~.Y:
.l~.c.f~.f:.L~.C:
.l~.o:.f~.a:.L~.o:
.l~.l:.f~.o:.L~.L:
.s,:

Obviously, the user can define other rules and suffixes that can prove useful. The ~ provides a handle on the SCCS filename format so that this is possible.