# # Makefile # # Building the binary from sources. # # ISC License # # Copyright 2023 Brmlab, z.s. # Dominik Pantůček # # 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 member-print.import.scm \ member-fees.import.scm members-dir.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 \ member-print.scm member-parser.scm member-fees.scm \ members-dir.scm BBSTOOL-OBJS=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 \ member-print.o member-fees.o members-dir.o BBSTOOL-SHARED=testing.so listing.so month.so period.so ansi.so \ dictionary.so command-line.so members-base.so utils.so \ primes.so member-record.so configuration.so progress.so \ table.so cards.so member-print.so member-fees.so \ members-dir.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 ansi.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) 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 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 member-parser.import.scm \ members-dir.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 primes.import.scm utils.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 utils.import.scm configuration.import.scm member-parser.so: member-parser.o member-parser.o: member-parser.import.scm member-parser.import.scm: $(MEMBER-PARSER-SOURCES) MEMBER-PRINT-SOURCES=member-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 member-print.so: member-print.o member-print.o: member-print.import.scm member-print.import.scm: $(MEMBER-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.so: member-fees.o member-fees.o: member-fees.import.scm member-fees.import.scm: $(MEMBER-FEES-SOURCES) MEMBERS-DIR-SOURCES=members-dir.scm members-dir.so: members-dir.o members-dir.o: members-dir.import.scm members-dir.import.scm: $(MEMBERS-DIR-SOURCES)