installer: use PathBox for main install destination.
[sdk] / include.mk
1
2 # HOST PLATFORM DETECTION
3 ifeq "$(OS)" "Windows_NT"
4    WINDOWS = defined
5 else
6 ifeq "$(OSTYPE)" "FreeBSD"
7    BSD = defined
8 else
9 ifeq "$(shell uname)" "Darwin"
10    OSX = defined
11 else
12    LINUX = defined
13 endif
14 endif
15 endif
16
17 # PLATFORM (TARGET)
18 ifndef PLATFORM
19 ifdef WINDOWS
20    PLATFORM := win32
21 else
22 ifdef OSX
23    PLATFORM := apple
24 else
25    PLATFORM := linux
26 endif
27 endif
28 endif
29
30 # MISC STRING TOOLS
31 empty :=
32 space := $(empty) $(empty)
33 fixspace = $(subst $(space),\$(space),$1)
34 hidspace = $(subst $(space),^,$1)
35 shwspace = $(subst ^,$(space),$1)
36
37 # PATH SEPARATOR STRING TOOLS
38 ifdef WINDOWS
39 ifndef MSYSCON
40    WIN_PS_TOOLS := defined
41 endif
42 endif
43 ifdef WIN_PS_TOOLS
44    fixps = $(subst \,/,$(1))
45    psep = $(subst \\,/,$(subst /,\,$(1)))
46    PS := $(strip \)
47 else
48    fixps = $(1)
49    PS := $(strip /)
50    psep = $(1)
51 endif
52
53 # PREFIXES AND EXTENSIONS
54 .SUFFIXES: .c .ec .sym .imp .o
55 S := .sym
56 I := .imp
57 O := .o
58 A := .a
59 ifeq "$(PLATFORM)" "win32"
60    E := .exe
61 ifeq "$(TARGET_TYPE)" "staticlib"
62    LP := lib
63 else
64    LP :=
65 endif
66    SO := .dll
67 else
68 ifeq "$(PLATFORM)" "apple"
69    E :=
70    LP := lib
71    SO := .dylib
72 else
73    E :=
74    LP := lib
75    SO := .so
76 endif
77 endif
78
79 # SUPER TOOLS
80 ifdef CCACHE
81    CCACHE_COMPILE := ccache
82 ifdef DISTCC
83    DISTCC_COMPILE := distcc
84 endif
85 else
86 ifdef DISTCC
87    DISTCC_COMPILE := distcc
88 endif
89 endif
90
91 # TOOLCHAIN
92 export CC      = $(CCACHE_COMPILE) $(DISTCC_COMPILE) gcc
93 export CPP     = $(CCACHE_COMPILE) $(DISTCC_COMPILE) cpp
94 export ECP     = ecp
95 export ECC     = ecc
96 export ECS     = ecs
97 export EAR     = ear
98 export AS      = as
99 export LD      = ld
100 export AR      = ar
101 export STRIP   = strip
102 UPX := upx
103
104 # SHELL COMMANDS
105 ifdef WINDOWS
106 ifndef MSYSCON
107    WIN_SHELL_COMMANDS := defined
108 endif
109 endif
110 ifdef WIN_SHELL_COMMANDS
111    echo = $(if $(1),echo $(1))
112    cpq = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @copy /y %%I $(call psep,$(2)) > nul 2>&1)
113    rmq = $(if $(1),-@del /f /q $(call psep,$(1)) > nul 2>&1)
114    rmrq = $(if $(1),-@rmdir /q /s $(call psep,$(1)) > nul 2>&1)
115    mkdirq = $(if $(1),-@mkdir $(call psep,$(1)) > nul 2>&1)
116    rmdirq = $(if $(1),-@rmdir /q $(call psep,$(1)) > nul 2>&1)
117 else
118    echo = $(if $(1),echo "$(1)")
119    cpq = $(if $(1),@cp $(1) $(2))
120    rmq = $(if $(1),-@rm -f $(1))
121    rmrq = $(if $(1),-@rm -f -r $(1))
122    mkdirq = $(if $(1),-@mkdir -p $(1))
123    rmdirq = $(if $(1),-@rmdir $(1))
124 endif
125
126 # COMPILER OPTIONS
127 ifeq "$(TARGET_TYPE)" "sharedlib"
128    ECSLIBOPT := -dynamiclib
129 else
130 ifeq "$(TARGET_TYPE)" "staticlib"
131    ECSLIBOPT := -staticlib
132 else
133    ECSLIBOPT :=
134 endif
135 endif
136 ifdef WINDOWS
137    FVISIBILITY :=
138    FPIC :=
139 ifeq "$(TARGET_TYPE)" "executable"
140    EXECUTABLE := $(CONSOLE)
141 else
142    EXECUTABLE :=
143 endif
144 else
145    FVISIBILITY := -fvisibility=hidden
146    FPIC := -fPIC
147    EXECUTABLE :=
148 endif
149 ifdef OSX
150 ifeq "$(TARGET_TYPE)" "sharedlib"
151    INSTALLNAME := -install_name $(LP)$(MODULE)$(SO)
152 else
153    INSTALLNAME :=
154 endif
155 else
156    INSTALLNAME :=
157 endif
158
159 # LINKER OPTIONS
160 ifdef OSX
161 ifeq "$(TARGET_TYPE)" "sharedlib"
162    SHAREDLIB := -dynamiclib -single_module -multiply_defined suppress
163    LINKOPT :=
164 else
165    SHAREDLIB :=
166    LINKOPT :=
167 endif
168 ifeq "$(TARGET_TYPE)" "sharedlib"
169    STRIPOPT := -x
170 else
171    STRIPOPT := -u -r
172 endif
173 else
174 ifeq "$(TARGET_TYPE)" "sharedlib"
175    SHAREDLIB := -shared
176 else
177    SHAREDLIB :=
178 endif
179    LINKOPT :=
180    STRIPOPT := -x
181 endif
182 ifdef WINDOWS
183    SODESTDIR := obj/$(PLATFORM)/bin/
184 else
185    SODESTDIR := obj/$(PLATFORM)/lib/
186 endif
187
188 # COMMON LIBRARIES DETECTION
189
190 ifdef WINDOWS
191
192 _SSL_CONF = $(call hidspace,$(call fixps,$(OPENSSL_CONF)))
193 _SSL_BIN = $(_SSL_CONF:$(notdir $(_SSL_CONF))=$(empty))
194 OPEN_SSL_INCLUDE_DIR = $(call fixspace,$(call shwspace,$(subst /bin,/include,$(_SSL_BIN))))
195 OPEN_SSL_LIB_DIR = $(call fixspace,$(call shwspace,$(subst /bin,/lib,$(_SSL_BIN))))
196 OPEN_SSL_BIN_DIR = $(call fixspace,$(call shwspace,$(_SSL_BIN)))
197
198 endif