From 3dd329af5bd294387f3cb581207d39f9bf71f50d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Mar 2023 14:31:03 +0100 Subject: [PATCH] Work on both shared and static linking. --- Makefile | 60 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 636bb2f..b1fe927 100644 --- a/Makefile +++ b/Makefile @@ -28,87 +28,107 @@ all: brmsaptool brmsaptool-static 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 \ members-base.o utils.o -brmsaptool: $(BRMSAPTOOL-SOURCES) - $(CSC) -o $@ $^ +BRMSAPTOOL-SHARED=brmsaptool.so testing.so listing.so month.so \ + 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 $@ $< .PHONY: 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 $(CSC) -c $< +%.so: %.scm + $(CSC) -s $< + %.import.scm: %.scm - $(CSC) -c -J $< + $(CSC) -t -J $< ################################################################ # Modules -brmsaptool.o: brmsaptool.scm testing.import.scm listing.import.scm \ - dictionary.import.scm month.import.scm period.import.scm \ - ansi.import.scm member-file.import.scm \ +BRMSAPTOOL-SOURCES=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 +brmsaptool.so: $(BRMSAPTOOL-SOURCES) +brmsaptool.o: $(BRMSAPTOOL-SOURCES) brmsaptool.so + TESTING-SOURCES=testing.scm -testing.o: $(TESTING-SOURCES) +testing.so: $(TESTING-SOURCES) +testing.o: $(TESTING-SOURCES) testing.so testing.import.scm: $(TESTING-SOURCES) 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) 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) 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) 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) 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) 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.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) 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) MEMBERS-BASE-SOURCES=members-base.scm testing.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) 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)