Work on both shared and static linking.

This commit is contained in:
Dominik Pantůček 2023-03-16 14:31:03 +01:00
parent 0005e70632
commit 3dd329af5b

View file

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