Fix builds on *BSD
Unified · Split
| @@ -8,7 +8,7 @@ export CC=clang # clang compiles the output much faster than gcc! · 7 unmodified lines | ||
| 8 | 8 | |
| 9 | 9 | ################################################################## |
| 10 | 10 | |
| 11 | −MACHINE := $(shell $(CC) -dumpmachine) | |
| 11 | +export MACHINE := $(shell $(CC) -dumpmachine) | |
| 12 | 12 | |
| 13 | 13 | ifneq (, $(findstring darwin, $(MACHINE))) |
| 14 | 14 | OS := darwin |
| @@ -18,9 +18,19 @@ else ifneq (, $(findstring mingw, $(MACHINE))) · 3 unmodified lines | ||
| 18 | 18 | OS := windows |
| 19 | 19 | else ifneq (, $(findstring windows, $(MACHINE))) |
| 20 | 20 | OS := windows |
| 21 | +else ifneq (, $(findstring bsd, $(MACHINE))) | |
| 22 | + OS := bsd | |
| 21 | 23 | else |
| 22 | − OS := unix | |
| 24 | + OS := linux | |
| 23 | 25 | endif |
| 26 | +export OS | |
| 27 | + | |
| 28 | +ifeq ($(OS),bsd) | |
| 29 | + MAKE := gmake | |
| 30 | +else | |
| 31 | + MAKE := make | |
| 32 | +endif | |
| 33 | +export MAKE | |
| 24 | 34 | |
| 25 | 35 | # current Idris2 version components |
| 26 | 36 | MAJOR=0 |
| @@ -73,7 +83,7 @@ ifeq ($(OS), darwin) · 46 unmodified lines | ||
| 73 | 83 | else |
| 74 | 84 | @sed -i '1 s|^.*$$|char* idris2_prefix = "${PREFIX}";|' dist/idris2.c |
| 75 | 85 | endif |
| 76 | − make -C dist | |
| 86 | + ${MAKE} -C dist | |
| 77 | 87 | @cp dist/idris2 ./idris2 |
| 78 | 88 | |
| 79 | 89 | # bit of a hack here, to get the prefix into the generated C! |
| @@ -86,42 +96,42 @@ dist/idris2.c: src/YafflePaths.idr check_version · 6 unmodified lines | ||
| 86 | 96 | @rm -f idris2.c idris2_prefix.c |
| 87 | 97 | |
| 88 | 98 | idris2c: dist/idris2.c |
| 89 | − make -C dist | |
| 99 | + ${MAKE} -C dist | |
| 90 | 100 | |
| 91 | 101 | src/YafflePaths.idr: |
| 92 | 102 | echo 'module YafflePaths; export yversion : ((Nat,Nat,Nat), String); yversion = ((${MAJOR},${MINOR},${PATCH}), "${GIT_SHA1}")' > src/YafflePaths.idr |
| 93 | 103 | |
| 94 | 104 | prelude: |
| 95 | − make -C libs/prelude IDRIS2=../../idris2 | |
| 105 | + ${MAKE} -C libs/prelude IDRIS2=../../idris2 | |
| 96 | 106 | |
| 97 | 107 | base: prelude |
| 98 | − make -C libs/base IDRIS2=../../idris2 | |
| 108 | + ${MAKE} -C libs/base IDRIS2=../../idris2 | |
| 99 | 109 | |
| 100 | 110 | network: prelude |
| 101 | − make -C libs/network IDRIS2=../../idris2 | |
| 102 | − make -C libs/network test IDRIS2=../../idris2 | |
| 111 | + ${MAKE} -C libs/network IDRIS2=../../idris2 | |
| 112 | + ${MAKE} -C libs/network test IDRIS2=../../idris2 | |
| 103 | 113 | |
| 104 | 114 | contrib: prelude |
| 105 | − make -C libs/contrib IDRIS2=../../idris2 | |
| 115 | + ${MAKE} -C libs/contrib IDRIS2=../../idris2 | |
| 106 | 116 | |
| 107 | 117 | libs : prelude base network contrib |
| 108 | 118 | |
| 109 | 119 | clean: clean-libs |
| 110 | − make -C src clean | |
| 111 | − make -C tests clean | |
| 112 | − make -C dist clean | |
| 120 | + ${MAKE} -C src clean | |
| 121 | + ${MAKE} -C tests clean | |
| 122 | + ${MAKE} -C dist clean | |
| 113 | 123 | rm -f runtests |
| 114 | 124 | rm -f idris2 dist/idris2.c |
| 115 | 125 | |
| 116 | 126 | clean-libs: |
| 117 | − make -C libs/prelude clean | |
| 118 | − make -C libs/base clean | |
| 119 | − make -C libs/network clean | |
| 120 | − make -C libs/contrib clean | |
| 127 | + ${MAKE} -C libs/prelude clean | |
| 128 | + ${MAKE} -C libs/base clean | |
| 129 | + ${MAKE} -C libs/network clean | |
| 130 | + ${MAKE} -C libs/contrib clean | |
| 121 | 131 | |
| 122 | 132 | test: |
| 123 | 133 | idris --build tests.ipkg |
| 124 | − @make -C tests only=$(only) | |
| 134 | + @${MAKE} -C tests only=$(only) | |
| 125 | 135 | |
| 126 | 136 | install-all: install-exec install-support install-libs |
| 127 | 137 | |
| @@ -143,7 +153,7 @@ install-exec: · 15 unmodified lines | ||
| 143 | 153 | install idris2 ${PREFIX}/bin |
| 144 | 154 | |
| 145 | 155 | install-libs: libs |
| 146 | − make -C libs/prelude install IDRIS2=../../idris2 | |
| 147 | − make -C libs/base install IDRIS2=../../idris2 | |
| 148 | − make -C libs/network install IDRIS2=../../idris2 IDRIS2_VERSION=${IDRIS2_VERSION} | |
| 149 | − make -C libs/contrib install IDRIS2=../../idris2 | |
| 156 | + ${MAKE} -C libs/prelude install IDRIS2=../../idris2 | |
| 157 | + ${MAKE} -C libs/base install IDRIS2=../../idris2 | |
| 158 | + ${MAKE} -C libs/network install IDRIS2=../../idris2 IDRIS2_VERSION=${IDRIS2_VERSION} | |
| 159 | + ${MAKE} -C libs/contrib install IDRIS2=../../idris2 | |
| @@ -1,11 +1,13 @@ | ||
| 1 | +include config.mk | |
| 2 | + | |
| 1 | 3 | .PHONY: idris2 clean |
| 2 | 4 | |
| 3 | 5 | all: idris2 |
| 4 | 6 | |
| 5 | 7 | idris2: idris2.c |
| 6 | − make -C rts | |
| 7 | − $(CC) $(OPT) idris2.c -o idris2 -I rts -L rts -lidris_rts -lgmp -lm | |
| 8 | + $(MAKE) -C rts | |
| 9 | + $(CC) $(OPT) idris2.c -o idris2 -I rts -L rts -lidris_rts $(GMP_LIB_DIR) -lgmp -lm | |
| 8 | 10 | |
| 9 | 11 | clean: |
| 10 | − make -C rts clean | |
| 12 | + ${MAKE} -C rts clean | |
| 11 | 13 | rm -f idris2 |
| @@ -1,29 +1,20 @@ | ||
| 1 | −RANLIB ?=ranlib | |
| 2 | −CFLAGS :=-O2 -Wall -std=c99 -pipe -fdata-sections -ffunction-sections -D_POSIX_C_SOURCE=200809L $(CFLAGS) | |
| 1 | +RANLIB ?=ranlib | |
| 2 | +CFLAGS :=-O2 -Wall -std=c99 -pipe -fdata-sections -ffunction-sections -D_POSIX_C_SOURCE=200809L $(CFLAGS) | |
| 3 | 3 | |
| 4 | −ifneq (, $(findstring bsd, $(MACHINE))) | |
| 5 | − GMP_INCLUDE_DIR := | |
| 6 | −else | |
| 7 | − GMP_INCLUDE_DIR :=-I/usr/local/include | |
| 8 | −endif | |
| 9 | − | |
| 10 | −MACHINE := $(shell $(CC) -dumpmachine) | |
| 11 | −ifneq (, $(findstring darwin, $(MACHINE))) | |
| 12 | − OS :=darwin | |
| 13 | −else ifneq (, $(findstring cygwin, $(MACHINE))) | |
| 14 | − OS :=windows | |
| 15 | −else ifneq (, $(findstring mingw, $(MACHINE))) | |
| 16 | − OS :=windows | |
| 17 | −else ifneq (, $(findstring windows, $(MACHINE))) | |
| 18 | − OS :=windows | |
| 19 | −else | |
| 20 | − OS :=unix | |
| 21 | −endif | |
| 22 | − | |
| 23 | −ifeq ($(OS),darwin) | |
| 24 | − SHLIB_SUFFIX :=.dylib | |
| 4 | +ifeq ($(OS),bsd) | |
| 5 | + GMP_INCLUDE_DIR =-I/usr/local/include | |
| 6 | + GMP_LIB_DIR =-L/usr/local/lib | |
| 7 | + SHLIB_SUFFIX =.so | |
| 8 | +else ifeq ($(OS),darwin) | |
| 9 | + GMP_INCLUDE_DIR = | |
| 10 | + GMP_LIB_DIR = | |
| 11 | + SHLIB_SUFFIX =.dylib | |
| 25 | 12 | else ifeq ($(OS),windows) |
| 26 | − SHLIB_SUFFIX :=.DLL | |
| 13 | + GMP_INCLUDE_DIR = | |
| 14 | + GMP_LIB_DIR = | |
| 15 | + SHLIB_SUFFIX =.DLL | |
| 27 | 16 | else |
| 28 | − SHLIB_SUFFIX :=.so | |
| 17 | + GMP_INCLUDE_DIR = | |
| 18 | + GMP_LIB_DIR = | |
| 19 | + SHLIB_SUFFIX =.so | |
| 29 | 20 | endif |
| @@ -1,14 +1,14 @@ | ||
| 1 | 1 | include ../config.mk |
| 2 | 2 | |
| 3 | −OBJS = idris_rts.o idris_heap.o idris_gc.o idris_gmp.o idris_bitstring.o \ | |
| 4 | − idris_opts.o idris_stats.o idris_utf8.o idris_stdfgn.o \ | |
| 5 | − idris_buffer.o getline.o idris_net.o | |
| 6 | −HDRS = idris_rts.h idris_heap.h idris_gc.h idris_gmp.h idris_bitstring.h \ | |
| 7 | − idris_opts.h idris_stats.h idris_stdfgn.h idris_net.h \ | |
| 8 | − idris_buffer.h idris_utf8.h getline.h | |
| 9 | −CFLAGS := $(CFLAGS) | |
| 10 | −CFLAGS += $(GMP_INCLUDE_DIR) $(GMP) -DIDRIS_TARGET_OS="\"$(OS)\"" | |
| 11 | −CFLAGS += -DIDRIS_TARGET_TRIPLE="\"$(MACHINE)\"" | |
| 3 | +OBJS =idris_rts.o idris_heap.o idris_gc.o idris_gmp.o idris_bitstring.o \ | |
| 4 | + idris_opts.o idris_stats.o idris_utf8.o idris_stdfgn.o \ | |
| 5 | + idris_buffer.o getline.o idris_net.o | |
| 6 | +HDRS =idris_rts.h idris_heap.h idris_gc.h idris_gmp.h idris_bitstring.h \ | |
| 7 | + idris_opts.h idris_stats.h idris_stdfgn.h idris_net.h \ | |
| 8 | + idris_buffer.h idris_utf8.h getline.h | |
| 9 | +CFLAGS :=$(CFLAGS) | |
| 10 | +CFLAGS +=$(GMP_INCLUDE_DIR) $(GMP) -DIDRIS_TARGET_OS="\"$(OS)\"" | |
| 11 | +CFLAGS +=-DIDRIS_TARGET_TRIPLE="\"$(MACHINE)\"" | |
| 12 | 12 | |
| 13 | 13 | ifeq ($(OS), windows) |
| 14 | 14 | OBJS += windows/win_utils.o |
| @@ -23,7 +23,9 @@ endif · 8 unmodified lines | ||
| 23 | 23 | |
| 24 | 24 | LIBTARGET = libidris_rts.a |
| 25 | 25 | |
| 26 | −build: $(LIBTARGET) $(DYLIBTARGET) | |
| 26 | +.PHONY: build install clean | |
| 27 | + | |
| 28 | +build: $(LIBTARGET) | |
| 27 | 29 | |
| 28 | 30 | $(LIBTARGET) : $(OBJS) |
| 29 | 31 | $(AR) rc $(LIBTARGET) $(OBJS) |
| @@ -37,5 +39,3 @@ clean : · 7 unmodified lines | ||
| 37 | 39 | rm -f $(OBJS) $(LIBTARGET) $(DYLIBTARGET) |
| 38 | 40 | |
| 39 | 41 | $(OBJS): $(HDRS) |
| 40 | − | |
| 41 | −.PHONY: build install clean | |
| @@ -1,19 +1,6 @@ | ||
| 1 | 1 | RANLIB ?=ranlib |
| 2 | 2 | AR ?=ar |
| 3 | 3 | |
| 4 | −MACHINE := $(shell $(CC) -dumpmachine) | |
| 5 | −ifneq (, $(findstring darwin, $(MACHINE))) | |
| 6 | − OS :=darwin | |
| 7 | −else ifneq (, $(findstring cygwin, $(MACHINE))) | |
| 8 | − OS :=windows | |
| 9 | −else ifneq (, $(findstring mingw, $(MACHINE))) | |
| 10 | − OS :=windows | |
| 11 | −else ifneq (, $(findstring windows, $(MACHINE))) | |
| 12 | − OS :=windows | |
| 13 | −else | |
| 14 | − OS :=unix | |
| 15 | −endif | |
| 16 | − | |
| 17 | 4 | SHLIB_SUFFIX :=.so |
| 18 | 5 | |
| 19 | 6 | LIBNAME=idris_net |