205 lines
5.7 KiB
Makefile
205 lines
5.7 KiB
Makefile
#
|
|
# Makefile
|
|
#
|
|
# Building the binary from sources.
|
|
#
|
|
# ISC License
|
|
#
|
|
# Copyright 2023 Brmlab, z.s.
|
|
# Dominik Pantůček <dominik.pantucek@trustica.cz>
|
|
#
|
|
# Permission to use, copy, modify, and/or distribute this software
|
|
# for any purpose with or without fee is hereby granted, provided
|
|
# that the above copyright notice and this permission notice appear
|
|
# in all copies.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
|
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
#
|
|
|
|
.PHONY: default
|
|
default: imports
|
|
|
|
.PHONY: shared
|
|
shared: bbstool
|
|
|
|
.PHONY: static
|
|
static: bbstool-static
|
|
|
|
.PHONY: all
|
|
all: imports shared static
|
|
|
|
CSC=csc
|
|
|
|
BBSTOOL-DEPS=bbstool.scm testing.import.scm listing.import.scm \
|
|
dictionary.import.scm month.import.scm period.import.scm \
|
|
ansi.import.scm command-line.import.scm \
|
|
members-base.import.scm utils.import.scm primes.import.scm \
|
|
member-record.import.scm configuration.import.scm \
|
|
progress.import.scm table.import.scm cards.import.scm \
|
|
member-parser.import.scm
|
|
|
|
BBSTOOL-SOURCES=bbstool.scm testing.scm listing.scm dictionary.scm \
|
|
month.scm period.scm ansi.scm command-line.scm \
|
|
members-base.scm utils.scm primes.scm member-record.scm \
|
|
configuration.scm progress.scm table.scm cards.scm
|
|
|
|
BBSTOOL-OBJS=testing.o listing.o month.o period.o ansi.o \
|
|
member-file.o dictionary.o command-line.o \
|
|
members-base.o utils.o primes.o member-record.o \
|
|
configuration.o progress.o table.o cards.o
|
|
|
|
BBSTOOL-SHARED=testing.so listing.so month.so period.so ansi.so \
|
|
member-file.so dictionary.so command-line.so \
|
|
members-base.so utils.so primes.so member-record.so \
|
|
configuration.so progress.so table.so cards.so
|
|
|
|
.PHONY: imports
|
|
imports: $(BBSTOOL-DEPS)
|
|
|
|
bbstool: $(BBSTOOL-DEPS)
|
|
$(CSC) -o $@ $<
|
|
|
|
bbstool-static: $(BBSTOOL-DEPS)
|
|
$(CSC) -static -o $@ $(BBSTOOL-SOURCES)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f *.c *.so *.link *.o *.import.scm bbstool bbstool-static
|
|
|
|
################################################################
|
|
# Module static and shared object and import source compilation
|
|
|
|
%.o: %.scm
|
|
$(CSC) -c $<
|
|
|
|
%.so: %.scm
|
|
$(CSC) -s $<
|
|
|
|
%.import.scm: %.scm
|
|
rm -f $@
|
|
$(CSC) -P -J $<
|
|
|
|
################################################################
|
|
# Modules
|
|
|
|
TESTING-SOURCES=testing.scm
|
|
|
|
testing.so: testing.o
|
|
testing.o: testing.import.scm
|
|
testing.import.scm: $(TESTING-SOURCES)
|
|
|
|
LISTING-SOURCES=listing.scm testing.import.scm
|
|
|
|
listing.so: listing.o
|
|
listing.o: listing.import.scm
|
|
listing.import.scm: $(LISTING-SOURCES)
|
|
|
|
DICTIONARY-SOURCES=dictionary.scm testing.import.scm
|
|
|
|
dictionary.so: dictionary.o
|
|
dictionary.o: dictionary.import.scm
|
|
dictionary.import.scm: $(DICTIONARY-SOURCES)
|
|
|
|
MONTH-SOURCES=month.scm testing.import.scm
|
|
|
|
month.so: month.o
|
|
month.o: month.import.scm
|
|
month.import.scm: $(MONTH-SOURCES)
|
|
|
|
PERIOD-SOURCES=period.scm testing.import.scm month.import.scm configuration.import.scm
|
|
|
|
period.so: period.o
|
|
period.o: period.import.scm
|
|
period.import.scm: $(PERIOD-SOURCES)
|
|
|
|
ANSI-SOURCES=ansi.scm testing.import.scm utils.import.scm
|
|
|
|
ansi.so: ansi.o
|
|
ansi.o: ansi.import.scm
|
|
ansi.import.scm: $(ANSI-SOURCES)
|
|
|
|
MEMBER-FILE-SOURCES=member-file.scm dictionary.import.scm \
|
|
ansi.import.scm month.import.scm period.import.scm \
|
|
listing.import.scm testing.import.scm \
|
|
configuration.import.scm progress.import.scm
|
|
|
|
member-file.so: member-file.o
|
|
member-file.o: member-file.import.scm
|
|
member-file.import.scm: $(MEMBER-FILE-SOURCES)
|
|
|
|
COMMAND-LINE-SOURCES=command-line.scm testing.import.scm
|
|
|
|
command-line.so: command-line.o
|
|
command-line.o: command-line.import.scm
|
|
command-line.import.scm: $(COMMAND-LINE-SOURCES)
|
|
|
|
MEMBERS-BASE-SOURCES=members-base.scm testing.import.scm \
|
|
utils.import.scm dictionary.import.scm member-file.import.scm \
|
|
primes.import.scm member-record.import.scm ansi.import.scm \
|
|
period.import.scm month.import.scm configuration.import.scm \
|
|
progress.import.scm table.import.scm
|
|
|
|
members-base.so: members-base.o
|
|
members-base.o: members-base.import.scm
|
|
members-base.import.scm: $(MEMBERS-BASE-SOURCES)
|
|
|
|
UTILS-SOURCES=utils.scm testing.import.scm
|
|
|
|
utils.so: utils.o
|
|
utils.o: utils.import.scm
|
|
utils.import.scm: $(UTILS-SOURCES)
|
|
|
|
PRIMES-SOURCES=primes.scm testing.import.scm utils.import.scm
|
|
|
|
primes.so: primes.o
|
|
primes.o: primes.import.scm
|
|
primes.import.scm: $(PRIMES-SOURCES)
|
|
|
|
MEMBER-RECORD-SOURCES=member-record.scm dictionary.import.scm \
|
|
period.import.scm testing.import.scm month.import.scm \
|
|
configuration.import.scm
|
|
|
|
member-record.so: member-record.o
|
|
member-record.o: member-record.import.scm
|
|
member-record.import.scm: $(MEMBER-RECORD-SOURCES)
|
|
|
|
CONFIGURATION-SOURCES=configuration.scm month.import.scm
|
|
|
|
configuration.so: configuration.o
|
|
configuration.o: configuration.import.scm
|
|
configuration.import.scm: $(CONFIGURATION-SOURCES)
|
|
|
|
PROGRESS-SOURCES=progress.scm
|
|
|
|
progress.so: progress.o
|
|
progress.o: progress.import.scm
|
|
progress.import.scm: $(PROGRESS-SOURCES)
|
|
|
|
TABLE-SOURCES=table.scm ansi.import.scm testing.import.scm \
|
|
utils.import.scm
|
|
|
|
table.so: table.o
|
|
table.o: table.import.scm
|
|
table.import.scm: $(TABLE-SOURCES)
|
|
|
|
CARDS-SOURCES=cards.scm dictionary.import.scm members-base.import.scm \
|
|
member-record.import.scm
|
|
|
|
cards.so: cards.o
|
|
cards.o: cards.import.scm
|
|
cards.import.scm: $(CARDS-SOURCES)
|
|
|
|
MEMBER-PARSER-SOURCES=member-parser.scm member-record.import.scm \
|
|
testing.import.scm dictionary.import.scm month.import.scm \
|
|
period.import.scm
|
|
|
|
member-parser.so: member-parser.o
|
|
member-parser.o: member-parser.import.scm
|
|
member-parser.import.scm: $(MEMBER-PARSER-SOURCES)
|