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/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 $@