hackerbase/Makefile

141 lines
3.9 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: 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