# # Makefile # # Building the project. # # 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: static static: ../hackerbase CSC=csc HACKERBASE-DEPS=hackerbase.scm cal-month.import.scm \ command-line.import.scm mbase.import.scm brmember.import.scm \ configuration.import.scm export-cards.import.scm \ members-print.import.scm members-payments.import.scm \ environment.import.scm mailman.import.scm texts.import.scm \ tests.import.scm notifications.import.scm logging.import.scm \ progress.import.scm cal-period.import.scm \ util-stdout.import.scm export-web-static.import.scm \ dokuwiki.import.scm HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \ cal-period.o ansi.o util-bst-ldict.o command-line.o mbase.o \ primes.o brmember.o configuration.o progress.o \ export-cards.o members-print.o members-fees.o mbase-dir.o \ util-csv.o bank-account.o bank-fio.o members-payments.o \ brmember-parser.o environment.o mailman.o util-set-list.o \ util-time.o util-tag.o util-io.o util-string.o util-io.o \ util-parser.o texts.o tests.o util-proc.o util-mail.o \ notifications.o util-format.o brmember-format.o logging.o \ specification.o util-git.o cal-day.o util-stdout.o \ cal-format.o table.o sgr-list.o sgr-block.o \ table-processor.o table-border.o table-style.o sgr-state.o \ util-utf8.o sgr-cell.o template-list-expander.o \ box-drawing.o util-list.o export-web-static.o util-dir.o \ dokuwiki.o racket-kwargs.o duck.o util-bst.o \ util-bst-bdict.o util-bst-ldict.o GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \ util-time.import.scm util-csv.import.scm util-git.import.scm \ util-io.import.scm util-stdout.import.scm \ util-parser.import.scm util-list.import.scm \ util-proc.import.scm util-format.import.scm \ util-tag.import.scm util-string.import.scm \ util-bst.import.scm util-bst-bdict.import.scm \ util-bst-ldict.import.scm GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \ progress.o testing.o util-proc.o util-git.o util-io.o \ util-stdout.o util-parser.o util-list.o util-proc.o \ util-format.o racket-kwargs.o util-bst-ldict.o util-tag.o \ util-set-list.o duck.o util-string.o util-bst.o \ util-bst-bdict.o util-bst-ldict.o .PHONY: imports imports: $(HACKERBASE-DEPS) ../hackerbase: $(HACKERBASE-OBJS) $(CSC) -strip -static -o $@ $(HACKERBASE-OBJS) .PHONY: clean clean: rm -f *.c *.link *.o *.import.scm ../hackerbase ../gendoc .PHONY: install install: static install -m 0755 -d /usr/local/bin install -m 0755 ../hackerbase /usr/local/bin/ install -m 0755 ../fetch_fio.sh /usr/local/bin/hb_fetch_fio install -m 0755 -d /usr/local/man/man1 install -m 0755 ../doc/hackerbase.1 /usr/local/man/man1/hackerbase.1 .PHONY: install-dev install-dev: static install -m 0755 -d /usr/local/bin install -m 0755 ../hackerbase /usr/local/bin/hackerbase-dev install -m 0755 ../fetch_fio.sh /usr/local/bin/hb_fetch_fio-dev install -m 0755 -d /usr/local/man/man1 install -m 0755 ../doc/hackerbase.1 /usr/local/man/man1/hackerbase-dev.1 .PHONY: gendoc gendoc: ../gendoc ../gendoc: $(GENDOC-OBJS) $(CSC) -strip -static -o $@ $(GENDOC-OBJS) ################################################################ # Module static and shared object and import source compilation %.o: %.scm $(CSC) -c -static $< %.import.scm: %.scm $(CSC) -regenerate-import-libraries -P -J $< ################################################################ # Main programs hackerbase.o: $(HACKERBASE-DEPS) gendoc.o: $(GENDOC-SOURCES) ################################################################ # 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 \ racket-kwargs.import.scm table.import.scm util-bst-ldict.scm listing.o: listing.import.scm listing.import.scm: $(LISTING-SOURCES) ANSI-SOURCES=ansi.scm testing.import.scm util-list.import.scm ansi.o: ansi.import.scm ansi.import.scm: $(ANSI-SOURCES) COMMAND-LINE-SOURCES=command-line.scm testing.import.scm \ util-proc.import.scm util-list.import.scm command-line.o: command-line.import.scm command-line.import.scm: $(COMMAND-LINE-SOURCES) MBASE-SOURCES=mbase.scm testing.import.scm util-bst-ldict.import.scm \ primes.import.scm brmember.import.scm ansi.import.scm \ cal-period.import.scm cal-month.import.scm \ configuration.import.scm progress.import.scm \ mbase-dir.import.scm util-tag.import.scm \ racket-kwargs.import.scm util-bst-bdict.import.scm \ util-list.import.scm mbase.o: mbase.import.scm mbase.import.scm: $(MBASE-SOURCES) PRIMES-SOURCES=primes.scm testing.import.scm util-list.import.scm primes.o: primes.import.scm primes.import.scm: $(PRIMES-SOURCES) BRMEMBER-SOURCES=brmember.scm util-bst-ldict.import.scm \ cal-period.import.scm testing.import.scm cal-month.import.scm \ configuration.import.scm primes.import.scm \ bank-account.import.scm util-tag.import.scm \ util-list.import.scm brmember.o: brmember.import.scm brmember.import.scm: $(BRMEMBER-SOURCES) CONFIGURATION-SOURCES=configuration.scm util-parser.import.scm configuration.o: configuration.import.scm configuration.import.scm: $(CONFIGURATION-SOURCES) PROGRESS-SOURCES=progress.scm util-time.import.scm progress.o: progress.import.scm progress.import.scm: $(PROGRESS-SOURCES) EXPORT-CARDS-SOURCES=export-cards.scm util-bst-ldict.import.scm \ mbase.import.scm brmember.import.scm export-cards.o: export-cards.import.scm export-cards.import.scm: $(EXPORT-CARDS-SOURCES) BRMEMBER-PARSER-SOURCES=brmember-parser.scm brmember.import.scm \ testing.import.scm util-bst-ldict.import.scm \ cal-month.import.scm cal-period.import.scm \ configuration.import.scm util-string.import.scm \ util-parser.import.scm cal-day.import.scm \ util-list.import.scm brmember-parser.o: brmember-parser.import.scm brmember-parser.import.scm: $(BRMEMBER-PARSER-SOURCES) MEMBERS-PRINT-SOURCES=members-print.scm util-bst-ldict.import.scm \ brmember.import.scm cal-month.import.scm table.import.scm \ listing.import.scm ansi.import.scm cal-period.import.scm \ primes.import.scm mbase.import.scm configuration.import.scm \ bank-account.import.scm members-fees.import.scm \ members-payments.import.scm brmember-format.import.scm \ specification.import.scm cal-format.import.scm \ util-git.import.scm util-list.import.scm \ racket-kwargs.import.scm members-print.o: members-print.import.scm members-print.import.scm: $(MEMBERS-PRINT-SOURCES) MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \ brmember.import.scm cal-month.import.scm table.import.scm \ mbase.import.scm specification.import.scm \ util-list.import.scm members-fees.o: members-fees.import.scm members-fees.import.scm: $(MEMBERS-FEES-SOURCES) MBASE-DIR-SOURCES=mbase-dir.scm testing.import.scm \ util-bst-ldict.import.scm brmember.import.scm \ brmember-parser.import.scm util-list.import.scm mbase-dir.o: mbase-dir.import.scm mbase-dir.import.scm: $(MBASE-DIR-SOURCES) UTIL-CSV-SOURCES=util-csv.scm testing.import.scm progress.import.scm \ util-io.import.scm duck.import.scm racket-kwargs.import.scm util-csv.o: util-csv.import.scm util-csv.import.scm: $(UTIL-CSV-SOURCES) BANK-ACCOUNT-SOURCES=bank-account.scm util-tag.import.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 \ util-csv.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 \ util-bst-ldict.import.scm members-fees.import.scm \ cal-period.import.scm configuration.import.scm \ progress.import.scm bank-fio.import.scm \ specification.import.scm util-list.import.scm members-payments.o: members-payments.import.scm members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES) ENVIRONMENT-SOURCES=environment.scm ansi.import.scm environment.o: environment.import.scm environment.import.scm: $(ENVIRONMENT-SOURCES) MAILMAN-SOURCES=mailman.scm progress.import.scm \ util-set-list.import.scm util-io.import.scm \ util-list.import.scm mailman.o: mailman.import.scm mailman.import.scm: $(MAILMAN-SOURCES) UTIL-SET-LIST-SOURCES=util-set-list.scm testing.import.scm \ util-tag.import.scm util-set-list.o: util-set-list.import.scm util-set-list.import.scm: $(UTIL-SET-LIST-SOURCES) UTIL-TIME-SOURCES=util-time.scm duck.import.scm util-time.o: util-time.import.scm util-time.import.scm: $(UTIL-TIME-SOURCES) UTIL-TAG-SOURCES=util-tag.scm testing.import.scm duck.import.scm util-tag.o: util-tag.import.scm util-tag.import.scm: $(UTIL-TAG-SOURCES) UTIL-IO-SOURCES=util-io.scm duck.import.scm util-io.o: util-io.import.scm util-io.import.scm: $(UTIL-IO-SOURCES) UTIL-STRING-SOURCES=util-string.scm testing.import.scm \ util-utf8.import.scm duck.import.scm util-string.o: util-string.import.scm util-string.import.scm: $(UTIL-STRING-SOURCES) UTIL-IO-SOURCES=util-io.scm util-io.o: util-io.import.scm util-io.import.scm: $(UTIL-IO-SOURCES) UTIL-PARSER-SOURCES=util-parser.scm testing.import.scm \ duck.import.scm util-parser.o: util-parser.import.scm util-parser.import.scm: $(UTIL-PARSER-SOURCES) TEXTS-SOURCES=texts.scm texts.o: texts.import.scm texts.import.scm: $(TEXTS-SOURCES) TESTS-SOURCES=tests.scm listing.import.scm util-bst-ldict.import.scm \ cal-month.import.scm cal-period.import.scm ansi.import.scm \ command-line.import.scm mbase-dir.import.scm \ primes.import.scm brmember.import.scm util-csv.import.scm \ util-set-list.import.scm util-parser.import.scm \ util-string.import.scm cal-day.import.scm \ util-utf8.import.scm sgr-state.import.scm sgr-list.import.scm \ sgr-block.import.scm template-list-expander.import.scm \ table-style.import.scm box-drawing.import.scm \ util-bst.import.scm tests.o: tests.import.scm tests.import.scm: $(TESTS-SOURCES) UTIL-PROC-SOURCES=util-proc.scm duck.import.scm util-proc.o: util-proc.import.scm util-proc.import.scm: $(UTIL-PROC-SOURCES) UTIL-MAIL-SOURCES=util-mail.scm util-io.import.scm \ util-string.import.scm util-utf8.import.scm \ racket-kwargs.import.scm duck.import.scm util-mail.o: util-mail.import.scm util-mail.import.scm: $(UTIL-MAIL-SOURCES) NOTIFICATIONS-SOURCES=notifications.scm brmember.import.scm \ util-mail.import.scm util-bst-ldict.import.scm \ members-payments.import.scm util-format.import.scm \ brmember-format.import.scm configuration.import.scm \ util-time.import.scm members-fees.import.scm mbase.import.scm \ members-print.import.scm table.import.scm \ bank-account.import.scm logging.import.scm notifications.o: notifications.import.scm notifications.import.scm: $(NOTIFICATIONS-SOURCES) UTIL-FORMAT-SOURCES=util-format.scm duck.import.scm util-format.o: util-format.import.scm util-format.import.scm: $(UTIL-FORMAT-SOURCES) BRMEMBER-FORMAT-SOURCES=brmember-format.scm util-bst-ldict.import.scm \ brmember.import.scm bank-account.import.scm \ members-fees.import.scm members-payments.import.scm brmember-format.o: brmember-format.import.scm brmember-format.import.scm: $(BRMEMBER-FORMAT-SOURCES) LOGGING-SOURCES=logging.scm util-string.import.scm logging.o: logging.import.scm logging.import.scm: $(LOGGING-SOURCES) SPECIFICATION-SOURCES=specification.scm cal-period.import.scm specification.o: specification.import.scm specification.import.scm: $(SPECIFICATION-SOURCES) UTIL-GIT-SOURCES=util-git.scm util-io.import.scm \ util-bst-ldict.import.scm util-parser.import.scm \ util-time.import.scm duck.import.scm racket-kwargs.import.scm util-git.o: util-git.import.scm util-git.import.scm: $(UTIL-GIT-SOURCES) CAL-MONTH-SOURCES=cal-month.scm util-tag.import.scm \ testing.import.scm cal-month.o: cal-month.import.scm cal-month.import.scm: $(CAL-MONTH-SOURCES) CAL-PERIOD-SOURCES=cal-period.scm cal-month.import.scm \ testing.import.scm util-tag.import.scm cal-day.import.scm cal-period.o: cal-period.import.scm cal-period.import.scm: $(CAL-PERIOD-SOURCES) CAL-DAY-SOURCES=cal-day.scm util-tag.import.scm cal-month.import.scm \ testing.import.scm cal-day.o: cal-day.import.scm cal-day.import.scm: $(CAL-DAY-SOURCES) UTIL-STDOUT-SOURCES=util-stdout.scm duck.import.scm util-stdout.o: util-stdout.import.scm util-stdout.import.scm: $(UTIL-STDOUT-SOURCES) CAL-FORMAT-SOURCES=cal-format.scm cal-day.import.scm cal-month.import.scm cal-format.o: cal-format.import.scm cal-format.import.scm: $(CAL-FORMAT-SOURCES) RACKET-KWARGS-SOURCES=racket-kwargs.scm racket-kwargs.o: racket-kwargs.import.scm racket-kwargs.import.scm: $(RACKET-KWARGS-SOURCES) TABLE-SOURCES=table.scm sgr-list.import.scm sgr-block.import.scm \ racket-kwargs.import.scm table-processor.import.scm \ table-border.import.scm table-style.import.scm table.o: table.import.scm table.import.scm: $(TABLE-SOURCES) SGR-LIST-SOURCES=sgr-list.scm racket-kwargs.import.scm \ sgr-state.import.scm testing.import.scm util-utf8.import.scm sgr-list.o: sgr-list.import.scm sgr-list.import.scm: $(SGR-LIST-SOURCES) SGR-BLOCK-SOURCES=sgr-block.scm racket-kwargs.import.scm \ sgr-state.import.scm sgr-list.import.scm testing.import.scm \ util-utf8.import.scm sgr-block.o: sgr-block.import.scm sgr-block.import.scm: $(SGR-BLOCK-SOURCES) TABLE-PROCESSOR-SOURCES=table-processor.scm sgr-cell.import.scm \ template-list-expander.import.scm table-processor.o: table-processor.import.scm table-processor.import.scm: $(TABLE-PROCESSOR-SOURCES) TABLE-BORDER-SOURCES=table-border.scm racket-kwargs.import.scm \ box-drawing.import.scm util-utf8.import.scm \ sgr-block.import.scm table-border.o: table-border.import.scm table-border.import.scm: $(TABLE-BORDER-SOURCES) TABLE-STYLE-SOURCES=table-style.scm box-drawing.import.scm \ testing.import.scm template-list-expander.import.scm table-style.o: table-style.import.scm table-style.import.scm: $(TABLE-STYLE-SOURCES) SGR-STATE-SOURCES=sgr-state.scm testing.import.scm \ racket-kwargs.import.scm sgr-state.o: sgr-state.import.scm sgr-state.import.scm: $(SGR-STATE-SOURCES) UTIL-UTF8-SOURCES=util-utf8.scm testing.import.scm util-utf8.o: util-utf8.import.scm util-utf8.import.scm: $(UTIL-UTF8-SOURCES) SGR-CELL-SOURCES=sgr-cell.scm racket-kwargs.import.scm \ sgr-state.import.scm sgr-list.import.scm sgr-block.import.scm sgr-cell.o: sgr-cell.import.scm sgr-cell.import.scm: $(SGR-CELL-SOURCES) TEMPLATE-LIST-EXPANDER-SOURCES=template-list-expander.scm \ testing.import.scm template-list-expander.o: template-list-expander.import.scm template-list-expander.import.scm: $(TEMPLATE-LIST-EXPANDER-SOURCES) BOX-DRAWING-SOURCES=box-drawing.scm util-utf8.import.scm \ racket-kwargs.import.scm testing.import.scm box-drawing.o: box-drawing.import.scm box-drawing.import.scm: $(BOX-DRAWING-SOURCES) UTIL-LIST-SOURCES=util-list.scm testing.import.scm duck.import.scm util-list.o: util-list.import.scm util-list.import.scm: $(UTIL-LIST-SOURCES) EXPORT-WEB-STATIC-SOURCES=export-web-static.scm brmember.import.scm \ util-dir.import.scm mbase.import.scm \ members-payments.import.scm cal-day.import.scm \ util-git.import.scm configuration.import.scm texts.import.scm export-web-static.o: export-web-static.import.scm export-web-static.import.scm: $(EXPORT-WEB-STATIC-SOURCES) UTIL-DIR-SOURCES=util-dir.scm util-dir.o: util-dir.import.scm util-dir.import.scm: $(UTIL-DIR-SOURCES) DOKUWIKI-SOURCES=dokuwiki.scm racket-kwargs.import.scm \ configuration.import.scm util-parser.import.scm \ util-csv.import.scm logging.import.scm util-stdout.import.scm dokuwiki.o: dokuwiki.import.scm dokuwiki.import.scm: $(DOKUWIKI-SOURCES) DUCK-SOURCES=duck.scm duck.o: duck.import.scm duck.import.scm: $(DUCK-SOURCES) DUCK-EXTRACT-SOURCES=duck-extract.scm util-proc.import.scm duck-extract.o: duck-extract.import.scm duck-extract.import.scm: $(DUCK-EXTRACT-SOURCES) UTIL-BST-SOURCES=util-bst.scm util-tag.import.scm testing.import.scm \ duck.import.scm util-bst.o: util-bst.import.scm util-bst.import.scm: $(UTIL-BST-SOURCES) UTIL-BST-BDICT-SOURCES=util-bst-bdict.scm util-bst.import.scm \ duck.import.scm util-bst-bdict.o: util-bst-bdict.import.scm util-bst-bdict.import.scm: $(UTIL-BST-BDICT-SOURCES) UTIL-BST-LDICT-SOURCES=util-bst-ldict.scm duck.import.scm \ util-bst.import.scm util-proc.import.scm util-bst-ldict.o: util-bst-ldict.import.scm util-bst-ldict.import.scm: $(UTIL-BST-LDICT-SOURCES)