CHICKEN_C = csc CSC_FLAGS += -K prefix # Order matters, since module check correctness on compilation MODULES = utils macros reader module-system semen sex-fmt-c fmt-c-writer sexc OBJ = $(MODULES:%=%.o) IMPORTS = $(MODULES:%=%.import.scm) LINK = $(MODULES:%=%.link) sexc: $(OBJ) main.o $(CHICKEN_C) $(CSC_FLAGS) $^ -o $@ main.o: main.scm $(CHICKEN_C) $(CSC_FLAGS) $< -c -o $@ -link sexc #------------------------------------------------------------------ utils.o: utils.scm $(CHICKEN_C) $(CSC_FLAGS) utils.scm -e -c -J -o utils.o -unit utils macros.o: macros.scm $(CHICKEN_C) $(CSC_FLAGS) macros.scm -e -c -J -o macros.o -unit macros reader.o: $(CHICKEN_C) $(CSC_FLAGS) reader.scm -e -c -J -o reader.o -unit reader module-system.o: module-system.scm reader.import.scm utils.import.scm $(CHICKEN_C) $(CSC_FLAGS) module-system.scm -e -c -J -o module-system.o -unit module-system -link utils semen.o: semen.scm macros.import.scm module-system.import.scm utils.import.scm $(CHICKEN_C) $(CSC_FLAGS) semen.scm -e -c -J -o semen.o -unit semen -link macros -link module-system -link utils fmt-c-writer.o: fmt-c-writer.scm sex-fmt-c.import.scm utils.import.scm $(CHICKEN_C) $(CSC_FLAGS) fmt-c-writer.scm -e -c -J -o fmt-c-writer.o -unit fmt-c-writer -link sex-fmt-c -link utils sexc.o: sexc.scm fmt-c-writer.import.scm macros.import.scm module-system.import.scm reader.import.scm semen.import.scm utils.import.scm $(CHICKEN_C) $(CSC_FLAGS) sexc.scm -e -c -J -o sexc.o -unit sexc -link fmt-c-writer -link macros -link module-system -link reader -link semen -link utils %.link: %.o %.import.scm: %.o %.o: %.scm $(CHICKEN_C) $(CSC_FLAGS) $< -e -c -J -o $@ -unit $(@:%.o=%) sex-tests: $(OBJ) tests/*.scm cd ./tests && $(CHICKEN_C) $(CSC_FLAGS) run.scm -c -o sex-tests.o $(CHICKEN_C) $(CSC_FLAGS) $(OBJ) ./tests/sex-tests.o -o sex-tests clean: rm -f $(OBJ) main.o ./tests/sex-tests.o rm -f $(IMPORTS) rm -f $(LINK) main.link rm -f sexc sex-tests