mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
69 lines
2 KiB
Makefile
69 lines
2 KiB
Makefile
# Cyclone Scheme
|
|
# Copyright (c) 2014, Justin Ethier
|
|
# Copyright (c) 2017, Koz Ross
|
|
# All rights reserved.
|
|
|
|
include Makefile.config
|
|
|
|
CYCLONE = cyclone
|
|
CCOMP = $(CC) $(CFLAGS)
|
|
SLDFILES = $(wildcard scheme/*.sld) $(wildcard srfi/*.sld)
|
|
COBJECTS = $(SLDFILES:.sld=.o)
|
|
HEADER_DIR = include/cyclone
|
|
HEADERS = $(HEADER_DIR)/runtime.h $(HEADER_DIR)/types.h
|
|
|
|
all : cyclone icyc
|
|
|
|
$(COBJECTS) : %.o: %.sld
|
|
$(CYCLONE) $<
|
|
|
|
cyclone : cyclone.scm $(COBJECTS) libcyclone.a
|
|
$(CYCLONE) cyclone.scm
|
|
|
|
icyc : icyc.scm $(COBJECTS) libcyclone.a
|
|
$(CYCLONE) $<
|
|
|
|
dispatch.c : generate-c.scm
|
|
cyclone $<
|
|
./generate-c
|
|
|
|
libcyclone.so.1 : runtime.c include/cyclone/runtime.h
|
|
gcc $(CFLAGS) -c -fPIC runtime.c -o runtime.o
|
|
gcc -shared -Wl,-soname,libcyclone.so.1 -o libcyclone.so.1.0.1 runtime.o
|
|
|
|
libcyclone.a : $(CFILES) include/cyclone/runtime.h include/cyclone/types.h
|
|
|
|
dispatch.o : dispatch.c $(HEADERS)
|
|
$(CCOMP) -c $< -o $@
|
|
|
|
gc.o : gc.c $(HEADERS)
|
|
$(CCOMP) -std=gnu99 -c $< -o $@
|
|
|
|
mstreams.o : mstreams.c $(HEADERS)
|
|
$(CCOMP) -c \
|
|
-DCYC_HAVE_OPEN_MEMSTREAM=$(CYC_PLATFORM_HAS_MEMSTREAM) \
|
|
-DCYC_HAVE_FMEMOPEN=$(CYC_PLATFORM_HAS_FMEMOPEN) \
|
|
$< -o $@
|
|
|
|
runtime.o : runtime.c $(HEADERS)
|
|
$(CCOMP) -c \
|
|
-DCYC_INSTALL_DIR=\"$(PREFIX)\" \
|
|
-DCYC_INSTALL_LIB=\"$(LIBDIR)\" \
|
|
-DCYC_INSTALL_INC=\"$(INCDIR)\" \
|
|
-DCYC_INSTALL_SLD=\"$(DATADIR)\" \
|
|
-DCYC_CC_PROG=\"$(CC_PROG)\" \
|
|
-DCYC_CC_EXEC=\"$(CC_EXEC)\" \
|
|
-DCYC_CC_LIB=\"$(CC_LIB)\" \
|
|
$< -o $@
|
|
|
|
libcyclone.a : runtime.o gc.o dispatch.o mstreams.o
|
|
$(AR) rcs $@ $^
|
|
# Instructions from: http://www.adp-gmbh.ch/cpp/gcc/create_lib.html
|
|
# Note compiler will have to link to this, eg:
|
|
#Linking against static library
|
|
#gcc -static main.c -L. -lmean -o statically_linked
|
|
#Note: the first three letters (the lib) must not be specified, as well as the suffix (.a)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf a.out *.o *.so *.a *.out tags cyclone icyc scheme/*.o scheme/*.c scheme/*.meta srfi/*.c srfi/*.meta srfi/*.o scheme/cyclone/*.o scheme/cyclone/*.c scheme/cyclone/*.meta cyclone.c dispatch.c icyc.c generate-c.c generate-c
|