### set up internal variables ###
put /local/cflags {-std=c99 -Wall}
put /local/ldflags {-lm}
put /local/objs {main.o foo.o bar.o}
# turn off optimization and add -g in debug mode
if /local/debug then
append /local/cflags {-g}
else
append /local/cflags {-O2}
end
# if somelib is selected, add -I and -l
isempty /local/r /local/somelib
invert /local/r
if /local/r then
append /local/cflags { -I/usr/include/somelib}
append /local/ldflags { -lsomelib}
end
### Generate the Makefile ###
print [@
# Makefile generated by scconfig - DO NOT EDIT - please edit Makefile.in
CFLAGS=@/local/cflags@
LDFLAGS=@/local/ldflags@
OBJS=@/local/objs@
all: main
main: $(OBJS)
$(CC) $(LDFLAGS)
@]
# loop over each object and generate an explicit rule
# (we are generating a dumb Makefile that would work with any
# old version of make)
foreach /local/o in /local/objs
put /local/c /local/o
sub /local/c {.o$} {.c}
print [@
@/local/o@: @/local/c@
$(CC) -c $(CFLAGS) @/local/c@ -o @/local/o@
@]
end
print {#end\n}