2 # Variables included by all Makefiles.
5 ## Directory definitions
7 libdir = $(slateroot
)/lib
8 mobiusdir
= $(slateroot
)/src
/mobius
9 pluginsdir
= $(slateroot
)/src
/plugins
10 testdir
= $(slateroot
)/tests
13 datadir = $(prefix)/share
/slate
14 exec_prefix = $(prefix)/bin
16 includedir = $(prefix)/include
17 mandir = $(prefix)/share
/man
18 man1dir = $(mandir)/man1
19 infodir = $(prefix)/info
20 lispdir
= $(prefix)/share
/emacs
/site-lisp
23 ## Build modes. Set on command line using QUIET=1, DEBUG=1 or PROFILE=1
32 SILENT_ERRORS
:= 2> $(DEVNULL
)
33 LIBTOOL_FLAGS
+= --silent
39 CFLAGS
+= -DSLATE_BUILD_TYPE
="\"Debug\""
43 COPTFLAGS
+= -pg
-g
-O2
44 CFLAGS
+= -DSLATE_BUILD_TYPE
="\"Profile\""
47 CFLAGS
+= -DSLATE_BUILD_TYPE
="\"Optimized\""
55 ## All required executables
61 WGET
:= wget
-q
--cache
=off
69 ## Platform independent definitions
72 CFLAGS
+= -DSLATE_DATADIR
=$(datadir) -D_POSIX_SOURCE
=200112L -D_POSIX_C_SOURCE
=200112L
73 CFLAGS
+= $(COPTFLAGS
) -std
=c99
-Wall
-pedantic
-Wno-unknown-pragmas
-pthread
$(PRINT_DEBUG
) $(INCLUDES
)
75 ## Determine the host system's byte order.
76 ## This creates a temporary test executable in the $(slateroot) directory
77 ## since we can guarantee write permissions there on all platforms.
79 BYTE_ORDER
:= "int main(){union{long l;char c[sizeof(long)];}u;u.l=1;return(u.c[sizeof(long)-1]==1);}"
80 BYTE_ORDER
:= $(shell echo
$(BYTE_ORDER
) > $(slateroot
)/byteorder.c
)
81 BYTE_ORDER
:= $(shell $(CC
) -o
$(slateroot
)/byteorder
$(slateroot
)/byteorder.c
)
82 BYTE_ORDER
:= $(shell $(slateroot
)/byteorder
; echo
$$?
)
83 BYTE_ORDER_
:= $(shell $(RM
) $(slateroot
)/byteorder.
* $(slateroot
)/byteorder
1>&2)
84 ifeq ($(BYTE_ORDER
),0)
85 BYTE_ORDER
:= LITTLE_ENDIAN
86 BYTE_ORDER_PREFIX
:= little
88 BYTE_ORDER
:= BIG_ENDIAN
89 BYTE_ORDER_PREFIX
:= big
95 CCVERSION
:= $(shell $(CC
) -dumpversion
)
97 LDFLAGS
:= # -avoid-version
99 #PLUGINS := platform.so posix.so pipe.so
100 #PLUGINS := x-windows.so
102 HOST_SYSTEM
:= $(shell uname
-s
)
104 INSTALL_MODE
:= -m
644
105 CPU_TYPE
:= `uname -m`
106 VM_LIBRARIES
= -lm
-ldl
-lpthread
110 VMDIR
:= $(slateroot
)/src
/vm
111 VM
:= $(VMDIR
)/$(VMNAME
)
112 DEFAULT_IMAGE ?
= slate.image
113 KERNEL_IMAGES
:= kernel.new.
*.
$(WORD_SIZE
).
*.image
114 DEFAULT_KERNEL_IMAGE ?
= $(shell ls
-t
$(KERNEL_IMAGES
) | head
-1)
116 CFLAGS_x-windows.c
=`pkg-config --cflags x11` `pkg-config --cflags cairo` -Werror
117 LDFLAGS_x-windows.lo
=`pkg-config --libs x11` `pkg-config --libs cairo`
118 CFLAGS_cocoa-windows.c
=`pkg-config --cflags cocoa` `pkg-config --cflags cairo`
119 LDFLAGS_cocoa-windows.lo
=`pkg-config --libs cocoa` `pkg-config --libs cairo`
120 CFLAGS_glib-wrapper.c
=`pkg-config --cflags glib-2.0`
121 LDFLAGS_glib-wrapper.lo
=`pkg-config --libs glib-2.0` `pkg-config --libs gobject-2.0`
122 CFLAGS_gdk-wrapper.c
=`pkg-config --cflags gdk-2.0`
123 LDFLAGS_gdk-wrapper.lo
=`pkg-config --libs gdk-2.0` `pkg-config --libs gthread-2.0`
124 CFLAGS_gtk-wrapper.c
=`pkg-config --cflags gtk+-2.0`
125 LDFLAGS_gtk-wrapper.lo
=`pkg-config --libs gtk+-2.0`
126 CFLAGS_llvm-wrapper.c
=`llvm-config --cflags`
127 LDFLAGS_llvm-wrapper.lo
=
131 PRINT_DEBUG_G
=-DPRINT_DEBUG_DEFUN
-DPRINT_DEBUG_GC_1
-DPRINT_DEBUG_OPCODES
132 PRINT_DEBUG_Y
= -DPRINT_DEBUG_STACK_POINTER
-DPRINT_DEBUG_STACK_PUSH
-DPRINT_DEBUG_FOUND_ROLE
-DPRINT_DEBUG_FUNCALL
133 PRINT_DEBUG_X
=-DPRINT_DEBUG
-DPRINT_DEBUG_OPCODES
-DPRINT_DEBUG_INSTRUCTION_COUNT
-DPRINT_DEBUG_CODE_POINTER
-DPRINT_DEBUG_DISPATCH
134 PRINT_DEBUG_1
=-DPRINT_DEBUG_DEFUN
-DPRINT_DEBUG_GC_1
135 PRINT_DEBUG_4
=-DPRINT_DEBUG_DEFUN
-DPRINT_DEBUG_GC
-DPRINT_DEBUG_OPCODES
-DPRINT_DEBUG_CODE_POINTER
-DPRINT_DEBUG_ENSURE
-DPRINT_DEBUG_STACK
136 PRINT_DEBUG_3
=-DPRINT_DEBUG_DEFUN
-DPRINT_DEBUG_GC
-DPRINT_DEBUG_OPTIMIZER
-DPRINT_DEBUG_PIC_HITS
-DPRINT_DEBUG_UNOPTIMIZER
137 PRINT_DEBUG_2
=-DPRINT_DEBUG_DEFUN
-DPRINT_DEBUG
-DPRINT_DEBUG_OPCODES
-DPRINT_DEBUG_INSTRUCTION_COUNT
-DPRINT_DEBUG_CODE_POINTER
-DPRINT_DEBUG_DISPATCH
-DPRINT_DEBUG_GC_MARKINGS
138 PRINT_DEBUG
=$(PRINT_DEBUG_1
)
141 ## Determine CPU type
143 #ifeq ($(HOST_SYSTEM), Darwin)
144 # CPU_TYPE := powerpc
147 ## TODO: Sparc detection for SunOS?
148 ## TODO: Base CPU type on real information, not just generic OS variant
150 ## CPU-type specific overrides. Any of the variables above may be changed here.
157 CFLAGS
+= -DVERSION
="\"$(VERSION)\""
160 CFLAGS
+=-DSLATE_DEFAULT_IMAGE
=$(DEFAULT_IMAGE
)
163 CFLAGS
+= -m
$(WORD_SIZE
)
165 #ifeq ($(CPU_TYPE), i686)
166 # CFLAGS += -m$(WORD_SIZE)
169 #ifeq ($(CPU_TYPE), x86_64)
170 # CFLAGS += -m$(WORD_SIZE)
173 ## Platform specific overrides. Any of the variables above may be changed here.
175 ifeq ($(HOST_SYSTEM
), AIX
)
177 PLUGINS
:= platform.so posix.so pipe.so
180 ifeq ($(HOST_SYSTEM
), BeOS
)
184 ifeq ($(findstring CYGWIN
,$(HOST_SYSTEM
)), CYGWIN
)
186 LDFLAGS
+= -no-undefined
189 # DEVNULL := NUL # Required if using cmd.exe and not bash.
192 ifeq ($(HOST_SYSTEM
), Darwin
)
193 # LIBTOOL := MACOSX_DEPLOYMENT_TARGET=10.3 glibtool
195 PLUGINS
:= cocoa-windows.so
198 ifeq ($(HOST_SYSTEM
), DragonFly
)
202 ifeq ($(HOST_SYSTEM
), FreeBSD
)
207 ifeq ($(HOST_SYSTEM
), HP-UX
)
210 PLUGINS
:= platform.so posix.so pipe.so
213 ifeq ($(HOST_SYSTEM
), Linux
)
215 PLUGINS
+= gtk-wrapper.so gdk-wrapper.so glib-wrapper.so llvm-wrapper.so
218 ifeq ($(findstring MINGW
,$(HOST_SYSTEM
)), MINGW
)
223 ifeq ($(HOST_SYSTEM
), NetBSD
)
227 ifeq ($(HOST_SYSTEM
), SunOS
)
228 PLUGINS
:= platform.so posix.so pipe.so
229 # Work around GCC Ultra SPARC alignment bug
230 # TODO: Should be CPU specific.
231 COPTFLAGS
:= $(subst -O2
,-O0
, $(COPTFLAGS
))
234 PLUGINS
:= $(subst .so
,$(LIB_SO_EXT
), $(PLUGINS
))