1 # HOST PLATFORM DETECTION
2 ifeq "$(OS)" "Windows_NT"
4 WINDOWS_HOST := defined
6 ifeq "$(OSTYPE)" "FreeBSD"
7 # tocheck: temporarily using linux when on bsd
10 HOST_PLATFORM := linux
13 ifeq "$(shell uname)" "Darwin"
14 HOST_PLATFORM := apple
17 HOST_PLATFORM := linux
22 UNAME_P := $(shell uname -p)
23 ifeq ($(UNAME_P),x86_64)
26 ifneq ($(filter %86,$(UNAME_P)),)
29 ifneq ($(filter arm%,$(UNAME_P)),)
37 ifndef TARGET_PLATFORM
39 TARGET_PLATFORM := $(PLATFORM)
42 ifndef TARGET_PLATFORM
44 TARGET_PLATFORM := win32
47 TARGET_PLATFORM := apple
50 TARGET_PLATFORM := bsd
52 TARGET_PLATFORM := linux
58 PLATFORM := $(TARGET_PLATFORM)
60 ifeq "$(TARGET_PLATFORM)" "win32"
61 WINDOWS_TARGET := defined
63 ifeq "$(TARGET_PLATFORM)" "apple"
66 ifeq "$(TARGET_PLATFORM)" "bsd"
69 LINUX_TARGET := defined
76 DEBUG_SUFFIX := .debug
80 ifneq "$(COMPILER)" "default"
81 COMPILER_SUFFIX := .$(COMPILER)
87 space := $(empty) $(empty)
88 escspace = $(subst $(space),\$(space),$(subst \$(space),$(space),$1))
89 hidspace = $(subst $(space),
\7f,$(subst \$(space),
\7f,$1))
90 shwspace = $(subst
\7f,\$(space),$1)
92 # PATH SEPARATOR STRING TOOLS
95 WIN_PS_TOOLS := defined
99 fixps = $(subst \,/,$(1))
100 psep = $(subst \\,/,$(subst /,\,$(1)))
108 # PREFIXES AND EXTENSIONS
109 .SUFFIXES: .c .ec .sym .imp .bowl .o .a
119 ifeq "$(TARGET_TYPE)" "staticlib"
139 CCACHE_COMPILE := ccache
141 DISTCC_COMPILE := distcc
145 DISTCC_COMPILE := distcc
152 WIN_SHELL_COMMANDS := defined
155 ifdef WIN_SHELL_COMMANDS
156 echo = $(if $(1),echo $(1))
157 cpq = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @copy /y %%I $(call psep,$(2)) > nul 2>&1)
158 rmq = $(if $(1),-@del /f /q $(call psep,$(1)) > nul 2>&1)
159 rmrq = $(if $(1),-@rmdir /q /s $(call psep,$(1)) > nul 2>&1)
160 mkdirq = $(if $(1),-@mkdir $(call psep,$(1)) > nul 2>&1)
161 rmdirq = $(if $(1),-@rmdir /q $(call psep,$(1)) > nul 2>&1)
163 echo = $(if $(1),echo "$(1)")
164 cpq = $(if $(1),@cp $(1) $(2))
165 rmq = $(if $(1),-@rm -f $(1))
166 rmrq = $(if $(1),-@rm -f -r $(1))
167 mkdirq = $(if $(1),-@mkdir -p $(1))
168 rmdirq = $(if $(1),-@rmdir $(1))
172 ifeq "$(TARGET_TYPE)" "sharedlib"
173 ECSLIBOPT := -dynamiclib
175 ifeq "$(TARGET_TYPE)" "staticlib"
176 ECSLIBOPT := -staticlib
184 ifeq "$(TARGET_TYPE)" "executable"
185 EXECUTABLE := $(CONSOLE)
190 FVISIBILITY := -fvisibility=hidden
195 ifeq "$(TARGET_TYPE)" "sharedlib"
196 INSTALLNAME := -install_name $(LP)$(MODULE)$(SO)
206 ifeq "$(TARGET_TYPE)" "sharedlib"
207 SHAREDLIB := -dynamiclib -single_module -multiply_defined suppress
213 ifeq "$(TARGET_TYPE)" "sharedlib"
219 ifeq "$(TARGET_TYPE)" "sharedlib"
225 STRIPOPT := -x --strip-unneeded --remove-section=.comment --remove-section=.note
228 SODESTDIR := obj/$(TARGET_PLATFORM)/bin/
230 SODESTDIR := obj/$(TARGET_PLATFORM)/lib/
233 _L = $(if $(filter $(1),$(EXCLUDED_LIBS)),,-l$(1))
240 # COMMON LIBRARIES DETECTION
245 _OPENSSL_CONF = $(call hidspace,$(call fixps,$(OPENSSL_CONF)))
246 OPENSSL_INCLUDE_DIR = $(call shwspace,$(subst /bin/openssl.cfg,/include,$(_OPENSSL_CONF)))
247 OPENSSL_LIB_DIR = $(call shwspace,$(subst /bin/openssl.cfg,/lib,$(_OPENSSL_CONF)))
248 OPENSSL_BIN_DIR = $(call shwspace,$(subst /bin/openssl.cfg,/bin,$(_OPENSSL_CONF)))
250 # to avoid issues with empty -L/-I
251 OPENSSL_INCLUDE_DIR = .
258 OFLAGS += -L/usr/lib/ec