# # 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: all all: brmsaptool CSC=csc BRMSAPTOOL-DEPS=brmsaptool.scm testing.import.scm \ listing.import.scm dictionary.import.scm month.import.scm \ period.import.scm ansi.import.scm member-file.import.scm \ command-line.import.scm members-base.import.scm \ utils.import.scm primes.import.scm BRMSAPTOOL-SOURCES=brmsaptool.scm testing.scm listing.scm \ dictionary.scm month.scm period.scm ansi.scm member-file.scm \ command-line.scm members-base.scm utils.scm primes.scm BRMSAPTOOL-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 BRMSAPTOOL-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 brmsaptool: $(BRMSAPTOOL-DEPS) $(CSC) -o $@ $< brmsaptool-static: $(BRMSAPTOOL-OBJS) $(CSC) -static -o $@ $(BRMSAPTOOL-SOURCES) .PHONY: clean clean: rm -f *.c *.so *.link *.o *.import.scm brmsaptool brmsaptool-static ################################################################ # Module static and shared object and import source compilation %.o: %.scm $(CSC) -c $< %.so: %.scm $(CSC) -s $< %.import.scm: %.scm $(CSC) -t -J $< ################################################################ # Modules TESTING-SOURCES=testing.scm testing.so: $(TESTING-SOURCES) testing.o: testing.import.scm testing.import.scm: testing.so LISTING-SOURCES=listing.scm testing.import.scm listing.so: $(LISTING-SOURCES) listing.o: listing.import.scm listing.import.scm: listing.so DICTIONARY-SOURCES=dictionary.scm testing.import.scm dictionary.so: $(DICTIONARY-SOURCES) dictionary.o: dictionary.import.scm dictionary.import.scm: dictionary.so MONTH-SOURCES=month.scm testing.import.scm month.so: $(MONTH-SOURCES) month.o: month.import.scm month.import.scm: month.so PERIOD-SOURCES=period.scm testing.import.scm month.import.scm period.so: $(PERIOD-SOURCES) period.o: period.import.scm period.import.scm: period.so ANSI-SOURCES=ansi.scm testing.import.scm utils.import.scm ansi.so: $(ANSI-SOURCES) ansi.o: ansi.import.scm ansi.import.scm: ansi.so MEMBER-FILE-SOURCES=member-file.scm dictionary.import.scm \ ansi.import.scm month.import.scm period.import.scm \ listing.import.scm testing.import.scm member-file.so: $(MEMBER-FILE-SOURCES) member-file.o: member-file.import.scm member-file.import.scm: member-file.so COMMAND-LINE-SOURCES=command-line.scm testing.import.scm command-line.so: $(COMMAND-LINE-SOURCES) command-line.o: command-line.import.scm command-line.import.scm: command-line.so MEMBERS-BASE-SOURCES=members-base.scm testing.import.scm \ utils.import.scm dictionary.import.scm member-file.import.scm members-base.so: $(MEMBERS-BASE-SOURCES) members-base.o: members-base.import.scm members-base.import.scm: members-base.so UTILS-SOURCES=utils.scm testing.import.scm utils.so: $(UTILS-SOURCES) utils.o: utils.import.scm utils.import.scm: utils.so PRIMES-SOURCES=primes.scm testing.import.scm primes.so: $(PRIMES-SOURCES) primes.o: primes.import.scm primes.import.scm: primes.so