on master help sign in
Support for FreeBSD
b23ac6eHannes Mehnert
Setup.hs+7−1
@@ -34,8 +34,14 @@ idrisCmd local = ".." </> buildDir local </> "idris" </> "idris"
34-- -----------------------------------------------------------------------------
34-- -----------------------------------------------------------------------------
35-- Make Commands
35-- Make Commands
36
36
37+-- use GNU make on FreeBSD
38+#ifdef freebsd_HOST_OS
39+mymake = "gmake"
40+#else
41+mymake = "make"
42+#endif
37make verbosity =
43make verbosity =
38− P.runProgramInvocation verbosity . P.simpleProgramInvocation "make"
44+ P.runProgramInvocation verbosity . P.simpleProgramInvocation mymake
39
45
40-- -----------------------------------------------------------------------------
46-- -----------------------------------------------------------------------------
41-- Flags
47-- Flags
config.mk+5−1
@@ -1,4 +1,3 @@
1−GMP_INCLUDE_DIR :=
2CC :=gcc
1CC :=gcc
3CABAL :=cabal
2CABAL :=cabal
4CFLAGS :=-O2 -Wall $(CFLAGS)
3CFLAGS :=-O2 -Wall $(CFLAGS)
@@ -6,6 +5,11 @@ CFLAGS :=-O2 -Wall $(CFLAGS)
6## Disable building of Effects
5## Disable building of Effects
7#CABALFLAGS :=-f NoEffects
6#CABALFLAGS :=-f NoEffects
8
7
8+ifneq (, $(findstring bsd, $(MACHINE)))
9+ GMP_INCLUDE_DIR :=
10+else
11+ GMP_INCLUDE_DIR :=-I/usr/local/include
12+endif
9
13
10MACHINE := $(shell $(CC) -dumpmachine)
14MACHINE := $(shell $(CC) -dumpmachine)
11ifneq (, $(findstring darwin, $(MACHINE)))
15ifneq (, $(findstring darwin, $(MACHINE)))
idris.cabal+3
@@ -414,6 +414,9 @@ Executable idris
414 if os(linux)
414 if os(linux)
415 cpp-options: -DLINUX
415 cpp-options: -DLINUX
416 build-depends: unix
416 build-depends: unix
417+ if os(freebsd)
418+ cpp-options: -DFREEBSD
419+ build-depends: unix
417 if os(darwin)
420 if os(darwin)
418 cpp-options: -DMACOSX
421 cpp-options: -DMACOSX
419 build-depends: unix
422 build-depends: unix
rts/Makefile+1−1
@@ -3,7 +3,7 @@ include ../config.mk
3OBJS = idris_rts.o idris_heap.o idris_gc.o idris_gmp.o idris_stdfgn.o \
3OBJS = idris_rts.o idris_heap.o idris_gc.o idris_gmp.o idris_stdfgn.o \
4 idris_bitstring.o idris_opts.o idris_stats.o
4 idris_bitstring.o idris_opts.o idris_stats.o
5HDRS = idris_rts.h idris_heap.h idris_gc.h idris_gmp.h idris_stdfgn.h \
5HDRS = idris_rts.h idris_heap.h idris_gc.h idris_gmp.h idris_stdfgn.h \
6− idris_bitstring.h idris_opts.h idris_stats.h
6+ idris_bitstring.h idris_opts.h idris_stats.h
7CFLAGS:=-fPIC $(CFLAGS)
7CFLAGS:=-fPIC $(CFLAGS)
8ifneq ($(GMP_INCLUDE_DIR),)
8ifneq ($(GMP_INCLUDE_DIR),)
9 CFLAGS += -isystem $(GMP_INCLUDE_DIR)
9 CFLAGS += -isystem $(GMP_INCLUDE_DIR)
src/Util/DynamicLinker.hs+2
@@ -22,6 +22,8 @@ hostDynamicLibExt = "so"
22hostDynamicLibExt = "dylib"
22hostDynamicLibExt = "dylib"
23#elif WINDOWS
23#elif WINDOWS
24hostDynamicLibExt = "dll"
24hostDynamicLibExt = "dll"
25+#elif FREEBSD
26+hostDynamicLibExt = "so"
25#else
27#else
26hostDynamicLibExt = error $ unwords
28hostDynamicLibExt = error $ unwords
27 [ "Undefined file extension for dynamic libraries"
29 [ "Undefined file extension for dynamic libraries"
src/Util/System.hs+12−3
@@ -71,15 +71,24 @@ rmFile f = do putStrLn $ "Removing " ++ f
71 (\ioerr -> putStrLn $ "WARNING: Cannot remove file "
71 (\ioerr -> putStrLn $ "WARNING: Cannot remove file "
72 ++ f ++ ", Error msg:" ++ show ioerr)
72 ++ f ++ ", Error msg:" ++ show ioerr)
73
73
74−
74+#ifdef FREEBSD
75+extraLib = " -L/usr/local/lib"
76+#else
77+extraLib = ""
78+#endif
75getLibFlags = do dir <- getDataDir
79getLibFlags = do dir <- getDataDir
76− return $ "-L" ++ (dir </> "rts") ++ " -lidris_rts -lgmp -lpthread"
80+ return $ "-L" ++ (dir </> "rts") ++ " -lidris_rts" ++ extraLib ++ " -lgmp -lpthread"
77
81
78getIdrisLibDir = do dir <- getDataDir
82getIdrisLibDir = do dir <- getDataDir
79 return $ addTrailingPathSeparator dir
83 return $ addTrailingPathSeparator dir
80
84
85+#ifdef FREEBSD
86+extraInclude = " -I/usr/local/include"
87+#else
88+extraInclude = ""
89+#endif
81getIncFlags = do dir <- getDataDir
90getIncFlags = do dir <- getDataDir
82− return $ "-I" ++ dir </> "rts"
91+ return $ "-I" ++ dir </> "rts" ++ extraInclude
83
92
84getExecutablePom = do dir <- getDataDir
93getExecutablePom = do dir <- getDataDir
85 return $ dir </> "java" </> "executable_pom.xml"
94 return $ dir </> "java" </> "executable_pom.xml"