bcf1f2a51d50d42a8cf7455ae969dbbba0ad4558
[sdk] / include.mk
1
2 # 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
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 # TOOLS
31 empty :=
32 space := $(empty) $(empty)
33 fixspace = $(subst $(space),\$(space),$1)
34 hidspace = $(subst $(space),^,$1)
35 shwspace = $(subst ^,$(space),$1)
36 ifdef WINDOWS
37    fixps = $(subst \,/,$(1))
38    psep = $(subst \\,/,$(subst /,\,$(1)))
39    PS := $(strip \)
40    SODESTDIR := obj/$(PLATFORM)/bin/
41 else
42    fixps = $(1)
43    PS := $(strip /)
44    psep = $(1)
45    SODESTDIR := obj/$(PLATFORM)/lib/
46 endif
47
48 # EXTENSIONS
49 .SUFFIXES: .c .ec .sym .imp .o
50 S := .sym
51 I := .imp
52 O := .o
53 A := .a
54
55 # PREFIXES AND POSTFIXES
56 ifeq "$(PLATFORM)" "win32"
57    E := .exe
58 ifeq "$(TARGET_TYPE)" "staticlib"
59    LP := lib
60 else
61    LP :=
62 endif
63    SO := .dll
64 else
65 ifeq "$(PLATFORM)" "apple"
66    E :=
67    LP := lib
68    SO := .dylib
69 else
70    E :=
71    LP := lib
72    SO := .so
73 endif
74 endif
75
76 # SHELL COMMANDS
77 ifdef WINDOWS
78    echo = $(if $(1),echo $(1))
79    cpq = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @copy /y %%I $(call psep,$(2)) > nul 2>&1)
80    rmq = $(if $(1),-@del /f /q $(call psep,$(1)) > nul 2>&1)
81    rmrq = $(if $(1),-@rmdir /q /s $(call psep,$(1)) > nul 2>&1)
82    mkdirq = $(if $(1),-@mkdir $(call psep,$(1)) > nul 2>&1)
83    rmdirq = $(if $(1),-@rmdir /q $(call psep,$(1)) > nul 2>&1)
84 else
85 ifdef OSX
86    echo = $(if $(1),echo "$(1)")
87    cpq = $(if $(1),cp $(1) $(2))
88    rmq = $(if $(1),-rm -f $(1))
89    rmrq = $(if $(1),-rm -f -r $(1))
90    mkdirq = $(if $(1),-mkdir -p $(1))
91    rmdirq = $(if $(1),-rmdir $(1))
92 else
93    echo = $(if $(1),echo "$(1)")
94    cpq = $(if $(1),@cp $(1) $(2))
95    rmq = $(if $(1),-@rm -f $(1))
96    rmrq = $(if $(1),-@rm -f -r $(1))
97    mkdirq = $(if $(1),-@mkdir -p $(1))
98    rmdirq = $(if $(1),-@rmdir $(1))
99 endif
100 endif
101
102 # COMPILER OPTIONS
103 ifeq "$(TARGET_TYPE)" "sharedlib"
104    ECSLIBOPT := -dynamiclib
105 else
106 ifeq "$(TARGET_TYPE)" "staticlib"
107    ECSLIBOPT := -staticlib
108 else
109    ECSLIBOPT :=
110 endif
111 endif
112 ifdef WINDOWS
113    FVISIBILITY :=
114    FPIC :=
115 ifeq "$(TARGET_TYPE)" "executable"
116    EXECUTABLE := $(CONSOLE)
117 else
118    EXECUTABLE :=
119 endif
120 else
121    FVISIBILITY := -fvisibility=hidden
122    FPIC := -fPIC
123    EXECUTABLE :=
124 endif
125 ifdef OSX
126 ifeq "$(TARGET_TYPE)" "sharedlib"
127    INSTALLNAME := -install_name $(LP)$(MODULE)$(SO)
128 else
129    INSTALLNAME :=
130 endif
131 else
132    INSTALLNAME :=
133 endif
134
135 # LINKER OPTIONS
136 ifdef OSX
137 ifeq "$(TARGET_TYPE)" "sharedlib"
138    SHAREDLIB := -dynamiclib -single_module -multiply_defined suppress
139    LINKOPT :=
140 else
141    SHAREDLIB :=
142    LINKOPT :=
143 endif
144 ifeq "$(TARGET_TYPE)" "sharedlib"
145    STRIPOPT := -x
146 else
147    STRIPOPT := -u -r
148 endif
149 else
150 ifeq "$(TARGET_TYPE)" "sharedlib"
151    SHAREDLIB := -shared
152 else
153    SHAREDLIB :=
154 endif
155    LINKOPT :=
156    STRIPOPT := -x
157 endif