hackerbase/src/Makefile

243 lines
7.4 KiB
Makefile

#
# Makefile
#
# Building the project.
#
# 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: static
static: ../bbstool
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 members-print.import.scm \
member-fees.import.scm members-dir.import.scm \
csv-simple.import.scm bank-account.import.scm \
bank-fio.import.scm members-payments.import.scm \
web-static.import.scm environment.import.scm \
mailman.import.scm util-set-list.import.scm
BBSTOOL-OBJS=bbstool.o testing.o listing.o month.o period.o ansi.o \
dictionary.o command-line.o members-base.o utils.o primes.o \
member-record.o configuration.o progress.o table.o cards.o \
members-print.o member-fees.o members-dir.o csv-simple.o \
bank-account.o bank-fio.o members-payments.o member-parser.o \
web-static.o environment.o mailman.o util-set-list.o
.PHONY: imports
imports: $(BBSTOOL-DEPS)
../bbstool: $(BBSTOOL-OBJS)
$(CSC) -static -o $@ $(BBSTOOL-OBJS)
.PHONY: clean
clean:
rm -f *.c *.link *.o *.import.scm ../bbstool
################################################################
# Module static and shared object and import source compilation
%.o: %.scm
$(CSC) -c -static $<
%.import.scm: %.scm
rm -f $@
$(CSC) -P -J $<
################################################################
# Main program
bbstool.o: $(BBSTOOL-DEPS)
################################################################
# Modules
TESTING-SOURCES=testing.scm
testing.o: testing.import.scm
testing.import.scm: $(TESTING-SOURCES)
LISTING-SOURCES=listing.scm testing.import.scm ansi.import.scm
listing.o: listing.import.scm
listing.import.scm: $(LISTING-SOURCES)
DICTIONARY-SOURCES=dictionary.scm testing.import.scm
dictionary.o: dictionary.import.scm
dictionary.import.scm: $(DICTIONARY-SOURCES)
MONTH-SOURCES=month.scm testing.import.scm
month.o: month.import.scm
month.import.scm: $(MONTH-SOURCES)
PERIOD-SOURCES=period.scm testing.import.scm month.import.scm \
configuration.import.scm
period.o: period.import.scm
period.import.scm: $(PERIOD-SOURCES)
ANSI-SOURCES=ansi.scm testing.import.scm utils.import.scm
ansi.o: ansi.import.scm
ansi.import.scm: $(ANSI-SOURCES)
COMMAND-LINE-SOURCES=command-line.scm testing.import.scm
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 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-dir.import.scm
members-base.o: members-base.import.scm
members-base.import.scm: $(MEMBERS-BASE-SOURCES)
UTILS-SOURCES=utils.scm testing.import.scm
utils.o: utils.import.scm
utils.import.scm: $(UTILS-SOURCES)
PRIMES-SOURCES=primes.scm testing.import.scm utils.import.scm
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 primes.import.scm utils.import.scm \
bank-account.import.scm
member-record.o: member-record.import.scm
member-record.import.scm: $(MEMBER-RECORD-SOURCES)
CONFIGURATION-SOURCES=configuration.scm month.import.scm
configuration.o: configuration.import.scm
configuration.import.scm: $(CONFIGURATION-SOURCES)
PROGRESS-SOURCES=progress.scm
progress.o: progress.import.scm
progress.import.scm: $(PROGRESS-SOURCES)
TABLE-SOURCES=table.scm ansi.import.scm testing.import.scm \
utils.import.scm
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.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 utils.import.scm configuration.import.scm
member-parser.o: member-parser.import.scm
member-parser.import.scm: $(MEMBER-PARSER-SOURCES)
MEMBERS-PRINT-SOURCES=members-print.scm dictionary.import.scm \
member-record.import.scm month.import.scm utils.import.scm \
table.import.scm listing.import.scm ansi.import.scm \
period.import.scm primes.import.scm members-base.import.scm \
configuration.import.scm bank-account.import.scm \
member-fees.import.scm members-payments.import.scm
members-print.o: members-print.import.scm
members-print.import.scm: $(MEMBERS-PRINT-SOURCES)
MEMBER-FEES-SOURCES=member-fees.scm configuration.import.scm \
member-record.import.scm month.import.scm table.import.scm \
members-base.import.scm
member-fees.o: member-fees.import.scm
member-fees.import.scm: $(MEMBER-FEES-SOURCES)
MEMBERS-DIR-SOURCES=members-dir.scm testing.import.scm \
dictionary.import.scm utils.import.scm \
member-record.import.scm member-parser.import.scm
members-dir.o: members-dir.import.scm
members-dir.import.scm: $(MEMBERS-DIR-SOURCES)
CSV-SIMPLE-SOURCES=csv-simple.scm testing.import.scm \
progress.import.scm
csv-simple.o: csv-simple.import.scm
csv-simple.import.scm: $(CSV-SIMPLE-SOURCES)
BANK-ACCOUNT-SOURCES=bank-account.scm
bank-account.o: bank-account.import.scm
bank-account.import.scm: $(BANK-ACCOUNT-SOURCES)
BANK-FIO-SOURCES=bank-fio.scm bank-account.import.scm \
csv-simple.import.scm progress.import.scm
bank-fio.o: bank-fio.import.scm
bank-fio.import.scm: $(BANK-FIO-SOURCES)
MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm \
dictionary.import.scm member-fees.import.scm \
period.import.scm configuration.import.scm utils.import.scm \
progress.import.scm
members-payments.o: members-payments.import.scm
members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES)
WEB-STATIC-SOURCES=web-static.scm member-record.import.scm \
utils.import.scm configuration.import.scm \
members-payments.import.scm members-base.import.scm
web-static.o: web-static.import.scm
web-static.import.scm: $(WEB-STATIC-SOURCES)
ENVIRONMENT-SOURCES=environment.scm ansi.import.scm
environment.o: environment.import.scm
environment.import.scm: $(ENVIRONMENT-SOURCES)
MAILMAN-SOURCES=mailman.scm utils.import.scm progress.import.scm
mailman.o: mailman.import.scm
mailman.import.scm: $(MAILMAN-SOURCES)
UTIL-SET-LIST-SOURCES=util-set-list.scm testing.import.scm
util-set-list.o: util-set-list.import.scm
util-set-list.import.scm: $(UTIL-SET-LIST-SOURCES)