Merge branch 'master' of git://iolanguage.com/Io
[io.git] / tools / Makefile
blobe7e2a262f5a3c78731953a18a083ae21163a5844
1 #CC ?= g++
3 WARN :=-Wall -Wstrict-prototypes
4 OPTIMIZE :=-Os -g
5 HEADERS :=-I.
6 LINK := $(CC)
7 CCOUTFLAG := -o
8 LINKOUTFLAG := -o
10 sublibs := $(shell ls ../libs)
11 sublibs_headers := $(addprefix -I../libs/, $(sublibs))
12 sublibs_headers := $(addsuffix /_build/headers, $(sublibs_headers))
14 HEADERS += $(sublibs_headers)
16 #sublibs_L := $(addprefix -L../libs/, $(sublibs))
17 #sublibs_L := $(addsuffix /_build/lib, $(sublibs_L))
18 sublibs_L := $(LINKDIRFLAG)../_build/lib
20 #sublibs_l := $(addprefix -l, $(sublibs))
21 sublibs_l := $(LINKLIBFLAG)iovmall$(DLL_LIB_SUFFIX)
23 #sublibs_DL := $(addprefix -L../libs/, $(sublibs))
24 #sublibs_DL := $(addsuffix _build/dll, $(sublibs_DL))
25 sublibs_DL := $(LINKDIRFLAG)../_build/dll
27 CFLAGS = $(OPTIMIZE) $(WARN)
28 LFLAGS :=
29 #LFLAGS +=-lMallocDebug
30 LIBS := $(sublibs_l)
32 LINKDIRFLAG := -L
33 LINKLIBFLAG := -l
34 DLL_LIB_SUFFIX :=
36 SYS ?= $(shell uname -s)
38 # NEEDS_DL - Needs -ldl for dlopen and friends.
40 NEEDS_DL := Darwin Linux SunOS syllable
41 ifneq (,$(findstring $(SYS),$(NEEDS_DL)))
42 LFLAGS +=-ldl -g
43 endif
45 NEEDS_M := FreeBSD Linux NetBSD DragonFly
46 ifneq (,$(findstring $(SYS),$(NEEDS_M)))
47 LFLAGS +=-lm
48 endif
50 #NEEDS_PTHREAD := FreeBSD Linux NetBSD
51 #ifneq (,$(findstring $(SYS),$(NEEDS_PTHREAD)))
52 #LFLAGS +=-lpthread
53 #endif
55 # SANE_POPEN - popen() can return a bidirectional FILE*
57 SANE_POPEN := Darwin FreeBSD NetBSD
58 ifneq (,$(findstring $(SYS),$(SANE_POPEN)))
59 CFLAGS +=-DSANE_POPEN
60 endif
62 DLL_SUFFIX := so
63 DLL_COMMAND := -shared
64 FLAT_NAMESPACE :=
65 FIXDLL :=
67 ifeq ($(SYS),Darwin)
68 DLL_SUFFIX := dylib
69 DLL_COMMAND := -dynamiclib
70 FLAT_NAMESPACE := -flat_namespace
71 FIXDLL := install_name_tool _build/binaries/io$(BINARY_SUFFIX) -change _build/dll/libiovmall.dylib @executable_path/libiovmall.dylib
72 endif
74 ifeq ($(SYS),IRIX)
75 RANLIB ?= touch
76 endif
79 ifneq (,$(findstring CYGW,$(SYS)))
80 DLL_SUFFIX := dll
81 BINARY_SUFFIX := .exe
82 endif
84 ifneq (,$(findstring MINGW,$(SYS)))
85 DLL_SUFFIX := dll
86 BINARY_SUFFIX := .exe
87 endif
89 ifneq (,$(findstring Windows,$(SYS)))
90 CC := cl -nologo
91 CCOUTFLAG := -Fo
92 LINK := link -link -debug
93 LINKOUTFLAG := -out:
94 DLL_SUFFIX := dll
95 DLL_COMMAND := -dll
96 LFLAGS += ws2_32.lib kernel32.lib shell32.lib
97 OPTIMIZE := -Zi -MD -DWIN32 -DNDEBUG -DBUILDING_IOVMALL_DLL -D_CRT_SECURE_NO_DEPRECATE
98 WARN :=
99 LINKDIRFLAG := -libpath:
100 LINKLIBFLAG := lib
101 DLL_LIB_SUFFIX := .lib
102 BINARY_SUFFIX := .exe
103 endif
105 ### FILES ####################################################################
107 sources := $(wildcard *.c)
108 objects := $(addprefix _build/objs/,$(sources:.c=.o))
110 ### RULES ####################################################################
112 all:
113 mkdir -p _build/binaries
114 mkdir -p _build/objs
115 #$(MAKE) _build/binaries/io_static$(BINARY_SUFFIX)
116 #$(MAKE) _build/binaries/io$(BINARY_SUFFIX)
118 #_build/objs/main.o:
119 $(CC) $(CFLAGS) -c $(CCOUTFLAG)_build/objs/main.o source/main.c $(HEADERS)
121 #_build/binaries/io_static$(BINARY_SUFFIX): _build/objs/main.o
122 $(LINK) $(LINKOUTFLAG)_build/binaries/io_static$(BINARY_SUFFIX) _build/objs/main.o ../_build/lib/libiovmall.a $(LFLAGS)
124 #_build/binaries/io: _build/objs/main.o
125 #$(CC) $(CFLAGS) $(FLAT_NAMESPACE) $(LFLAGS) -o _build/binaries/io$(BINARY_SUFFIX) _build/objs/main.o ../_build/dll/libiovmall.$(DLL_SUFFIX)
126 $(LINK) $(FLAT_NAMESPACE) $(LFLAGS) $(LINKOUTFLAG)_build/binaries/io$(BINARY_SUFFIX) _build/objs/main.o $(LINKDIRFLAG)../_build/dll $(LINKLIBFLAG)iovmall$(DLL_LIB_SUFFIX)
128 $(FIXDLL)
130 clean:
131 -rm -rf _build
133 test:
134 ./_build/binaries/io_static$(BINARY_SUFFIX) ../libs/iovm/tests/run.io
136 docs:
137 ./io_static$(BINARY_SUFFIX) _docgen/DocsExtractor.io .
139 cleanDocs:
140 -rm -f _ioCode/zzz_docs.io
142 speedtest:
143 ./io_static$(BINARY_SUFFIX) _tests/_speed/speed.io > _tests/_speed/SpeedResults
144 python _tests/_speed/speed.py >> _tests/_speed/SpeedResults
145 ruby _tests/_speed/speed.ruby >> _tests/_speed/SpeedResults
146 #lua _tests/_speed/speed.lua >> _tests/_speed/SpeedResults
147 ./io_static$(BINARY_SUFFIX) _tests/_speed/speedResults.io > _tests/_speed/SpeedResults.html