History

Merge pull request #310 from Kaiepi/bsd-builds

Fix builds on *BSD

Edwin Brady committed 6 years ago

Commit 61fae5c2 parents cbd88c9 93871c55 files · +64 −74Browse files

Unified · Split

5 files
  1. Makefile +31 −21
  2. dist/Makefile +5 −3
  3. dist/config.mk +16 −25
  4. dist/rts/Makefile +12 −12
  5. libs/network/Makefile +0 −13
Makefile+31−21
@@ -8,7 +8,7 @@ export CC=clang # clang compiles the output much faster than gcc! · 7 unmodified lines
88
99 ##################################################################
1010
11−MACHINE := $(shell $(CC) -dumpmachine)
11+export MACHINE := $(shell $(CC) -dumpmachine)
1212
1313 ifneq (, $(findstring darwin, $(MACHINE)))
1414 OS := darwin
@@ -18,9 +18,19 @@ else ifneq (, $(findstring mingw, $(MACHINE))) · 3 unmodified lines
1818 OS := windows
1919 else ifneq (, $(findstring windows, $(MACHINE)))
2020 OS := windows
21+else ifneq (, $(findstring bsd, $(MACHINE)))
22+ OS := bsd
2123 else
22− OS := unix
24+ OS := linux
2325 endif
26+export OS
27+
28+ifeq ($(OS),bsd)
29+ MAKE := gmake
30+else
31+ MAKE := make
32+endif
33+export MAKE
2434
2535 # current Idris2 version components
2636 MAJOR=0
@@ -73,7 +83,7 @@ ifeq ($(OS), darwin) · 46 unmodified lines
7383 else
7484 @sed -i '1 s|^.*$$|char* idris2_prefix = "${PREFIX}";|' dist/idris2.c
7585 endif
76− make -C dist
86+ ${MAKE} -C dist
7787 @cp dist/idris2 ./idris2
7888
7989 # 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
8696 @rm -f idris2.c idris2_prefix.c
8797
8898 idris2c: dist/idris2.c
89− make -C dist
99+ ${MAKE} -C dist
90100
91101 src/YafflePaths.idr:
92102 echo 'module YafflePaths; export yversion : ((Nat,Nat,Nat), String); yversion = ((${MAJOR},${MINOR},${PATCH}), "${GIT_SHA1}")' > src/YafflePaths.idr
93103
94104 prelude:
95− make -C libs/prelude IDRIS2=../../idris2
105+ ${MAKE} -C libs/prelude IDRIS2=../../idris2
96106
97107 base: prelude
98− make -C libs/base IDRIS2=../../idris2
108+ ${MAKE} -C libs/base IDRIS2=../../idris2
99109
100110 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
103113
104114 contrib: prelude
105− make -C libs/contrib IDRIS2=../../idris2
115+ ${MAKE} -C libs/contrib IDRIS2=../../idris2
106116
107117 libs : prelude base network contrib
108118
109119 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
113123 rm -f runtests
114124 rm -f idris2 dist/idris2.c
115125
116126 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
121131
122132 test:
123133 idris --build tests.ipkg
124− @make -C tests only=$(only)
134+ @${MAKE} -C tests only=$(only)
125135
126136 install-all: install-exec install-support install-libs
127137
@@ -143,7 +153,7 @@ install-exec: · 15 unmodified lines
143153 install idris2 ${PREFIX}/bin
144154
145155 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
dist/Makefile+5−3
@@ -1,11 +1,13 @@
1+include config.mk
2+
13 .PHONY: idris2 clean
24
35 all: idris2
46
57 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
810
911 clean:
10− make -C rts clean
12+ ${MAKE} -C rts clean
1113 rm -f idris2
dist/config.mk+16−25
@@ -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)
33
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
2512 else ifeq ($(OS),windows)
26− SHLIB_SUFFIX :=.DLL
13+ GMP_INCLUDE_DIR =
14+ GMP_LIB_DIR =
15+ SHLIB_SUFFIX =.DLL
2716 else
28− SHLIB_SUFFIX :=.so
17+ GMP_INCLUDE_DIR =
18+ GMP_LIB_DIR =
19+ SHLIB_SUFFIX =.so
2920 endif
dist/rts/Makefile+12−12
@@ -1,14 +1,14 @@
11 include ../config.mk
22
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)\""
1212
1313 ifeq ($(OS), windows)
1414 OBJS += windows/win_utils.o
@@ -23,7 +23,9 @@ endif · 8 unmodified lines
2323
2424 LIBTARGET = libidris_rts.a
2525
26−build: $(LIBTARGET) $(DYLIBTARGET)
26+.PHONY: build install clean
27+
28+build: $(LIBTARGET)
2729
2830 $(LIBTARGET) : $(OBJS)
2931 $(AR) rc $(LIBTARGET) $(OBJS)
@@ -37,5 +39,3 @@ clean : · 7 unmodified lines
3739 rm -f $(OBJS) $(LIBTARGET) $(DYLIBTARGET)
3840
3941 $(OBJS): $(HDRS)
40−
41−.PHONY: build install clean
libs/network/Makefile+0−13
@@ -1,19 +1,6 @@
11 RANLIB ?=ranlib
22 AR ?=ar
33
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−
174 SHLIB_SUFFIX :=.so
185
196 LIBNAME=idris_net

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t