1 #
2 # MacOS glib-lite Makefile
3 #
4
5 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
6 TARGET_DIRS = $(BUILD_DIR)
7
8 SRCBASE_DIR = ../../../3rd_party/glib/
9 LIBFFI_DIR = ../../../3rd_party/libffi
10 OBJBASE_DIR = $(BUILD_DIR)/obj/glib-lite
11
12 DIRLIST = glib \
13 glib/libcharset/ \
14 glib/gnulib/ \
15 glib/pcre/ \
16 gobject/ \
17 gthread/ \
18 gmodule/
19
20 TARGET_NAME = lib$(BASE_NAME).dylib
21 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
22
23 CFLAGS += -fPIC \
24 -Werror=implicit-function-declaration \
25 -DG_DISABLE_CAST_CHECKS \
26 -DGLIB_COMPILATION \
27 -DGOBJECT_COMPILATION \
28 -DLIBDIR=\"/irrelevant/lib\" \
29 -DG_LOG_DOMAIN=\"GLib\" \
30 -DGSTREAMER_LITE \
31 -DG_DISABLE_DEPRECATED \
32 -DG_DISABLE_ASSERT \
33 -DPCRE_STATIC \
34 -DLINK_SIZE=2 \
35 -DMAX_NAME_SIZE=32 \
36 -DMAX_NAME_COUNT=10000 \
37 -DNEWLINE=-1 \
38 -DPOSIX_MALLOC_THRESHOLD=10 \
39 -DMATCH_LIMIT=10000000 \
40 -DMATCH_LIMIT_RECURSION=10000000
41
42 ifeq ($(BUILD_TYPE), Release)
43 CFLAGS += -Os
44 else
45 CFLAGS += -O0 -g -Wall
46 endif
47
48 INCLUDES = -I$(SRCBASE_DIR) \
49 -I$(SRCBASE_DIR)/glib \
50 -I$(SRCBASE_DIR)/build/osx \
51 -I$(LIBFFI_DIR)/include \
52 -I$(LIBFFI_DIR)/include/mac/x64
53
54 LDFLAGS += -Wl,-install_name,@rpath/$(TARGET_NAME) \
55 -Wl,-framework \
56 -Wl,CoreServices \
57 -liconv \
58 -L$(BUILD_DIR) -lffi
59
60 C_SOURCES = glib/garray.c \
61 glib/gasyncqueue.c \
62 glib/gatomic.c \
63 glib/gbacktrace.c \
64 glib/gbase64.c \
65 glib/gbytes.c \
66 glib/gbookmarkfile.c \
67 glib/gbitlock.c \
68 glib/gcharset.c \
69 glib/gchecksum.c \
70 glib/gconvert.c \
71 glib/gdataset.c \
72 glib/gdate.c \
73 glib/gdatetime.c \
74 glib/gdir.c \
75 glib/gerror.c \
76 glib/genviron.c \
77 glib/ghmac.c \
78 glib/gfileutils.c \
79 glib/ghash.c \
80 glib/ghook.c \
81 glib/giochannel.c \
82 glib/giounix.c \
83 glib/gkeyfile.c \
84 glib/glib-init.c \
85 glib/glib-private.c \
86 glib/glist.c \
87 glib/gmain.c \
88 glib/gmappedfile.c \
89 glib/gmarkup.c \
90 glib/gmem.c \
91 glib/gmessages.c \
92 glib/ggettext.c \
93 glib/gnode.c \
94 glib/goption.c \
95 glib/gpattern.c \
96 glib/gpoll.c \
97 glib/gprimes.c \
98 glib/gprintf.c \
99 glib/gqsort.c \
100 glib/gquark.c \
101 glib/gqueue.c \
102 glib/grand.c \
103 glib/gregex.c \
104 glib/grcbox.c \
105 glib/grefcount.c \
106 glib/gscanner.c \
107 glib/gsequence.c \
108 glib/gspawn.c \
109 glib/gshell.c \
110 glib/gslice.c \
111 glib/gslist.c \
112 glib/gstdio.c \
113 glib/gstrfuncs.c \
114 glib/gstring.c \
115 glib/gstringchunk.c \
116 glib/gtestutils.c \
117 glib/gthread.c \
118 glib/gthread-posix.c \
119 glib/gthreadpool.c \
120 glib/gtimer.c \
121 glib/gtimezone.c \
122 glib/gtrashstack.c \
123 glib/gtranslit.c \
124 glib/gtree.c \
125 glib/gunibreak.c \
126 glib/gunidecomp.c \
127 glib/guniprop.c \
128 glib/gurifuncs.c \
129 glib/gutf8.c \
130 glib/gutils.c \
131 glib/ghostutils.c \
132 glib/gvarianttype.c \
133 glib/gvariant.c \
134 glib/gvariant-core.c \
135 glib/gvariant-serialiser.c \
136 glib/gvarianttypeinfo.c \
137 glib/gwakeup.c \
138 glib/glib-unix.c \
139 glib/libcharset/localcharset.c \
140 glib/gnulib/asnprintf.c \
141 glib/gnulib/printf-args.c \
142 glib/gnulib/printf-parse.c \
143 glib/gnulib/printf.c \
144 glib/gnulib/vasnprintf.c \
145 glib/pcre/pcre_chartables.c \
146 glib/pcre/pcre_compile.c \
147 glib/pcre/pcre_config.c \
148 glib/pcre/pcre_dfa_exec.c \
149 glib/pcre/pcre_exec.c \
150 glib/pcre/pcre_fullinfo.c \
151 glib/pcre/pcre_get.c \
152 glib/pcre/pcre_globals.c \
153 glib/pcre/pcre_newline.c \
154 glib/pcre/pcre_ord2utf8.c \
155 glib/pcre/pcre_study.c \
156 glib/pcre/pcre_tables.c \
157 glib/pcre/pcre_xclass.c \
158 gobject/gatomicarray.c \
159 gobject/gbinding.c \
160 gobject/gboxed.c \
161 gobject/gclosure.c \
162 gobject/genums.c \
163 gobject/gobject.c \
164 gobject/gparam.c \
165 gobject/gparamspecs.c \
166 gobject/gsignal.c \
167 gobject/gsourceclosure.c \
168 gobject/gtype.c \
169 gobject/gtypemodule.c \
170 gobject/gtypeplugin.c \
171 gobject/gvalue.c \
172 gobject/gvaluearray.c \
173 gobject/gvaluetransform.c \
174 gobject/gvaluetypes.c \
175 gobject/gmarshal.c \
176 gthread/gthread-impl.c \
177 gmodule/gmodule.c
178
179 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
180 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES))
181
182 .PHONY: default
183
184 default: $(TARGET)
185
186 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
187 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
188
189 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)
190
191 $(OBJ_DIRS):
192 mkdir -p $(OBJ_DIRS)
193
194 $(TARGET_DIRS):
195 mkdir -p $(TARGET_DIRS)
196
197 $(TARGET): $(OBJECTS)
198 $(LINKER) -dynamiclib $(OBJECTS) $(LDFLAGS) -o $@