Using pkg-config --libs to get library link lines has the disadvantage
of bringing in many more library dependencies than actually necessary,
since that assumes that dependencies of libraries need to be specified
explicitly at link time (even when the library is itself linked against
those dependencies). Using GNU ld's --as-needed option causes these
unnecessary dependencies to be omitted from the binary.
--as-needed needs to be specified after all the objects to be linked
into the binary and before the libraries, so some reordering of the link
command line is needed.
CC = gcc
CFLAGS = -Wall -Os $(EXTRA_CFLAGS)
CPPFLAGS = `pkg-config --cflags dbus-glib-1` $(EXTRA_CPPFLAGS)
CC = gcc
CFLAGS = -Wall -Os $(EXTRA_CFLAGS)
CPPFLAGS = `pkg-config --cflags dbus-glib-1` $(EXTRA_CPPFLAGS)
-LDFLAGS = `pkg-config --libs dbus-glib-1` $(EXTRA_LDFLAGS)
+LDFLAGS = -Wl,--as-needed `pkg-config --libs dbus-glib-1` $(EXTRA_LDFLAGS)
PREFIX = /usr
APP = browser-switchboard
PREFIX = /usr
APP = browser-switchboard
$(APP): dbus-server-glue.h $(obj)
$(APP): dbus-server-glue.h $(obj)
- $(CC) $(CFLAGS) $(LDFLAGS) -o $(APP) $(obj)
+ $(CC) $(CFLAGS) -o $(APP) $(obj) $(LDFLAGS)
dbus-server-glue.h:
dbus-binding-tool --mode=glib-server --prefix="osso_browser" \
dbus-server-glue.h:
dbus-binding-tool --mode=glib-server --prefix="osso_browser" \
CPPFLAGS_HILDON = -DHILDON `pkg-config --cflags hildon-1`
CPPFLAGS_PLUGIN = $(CPPFLAGS_HILDON) -DHILDON_CP_APPLET \
`pkg-config --cflags libosso` `pkg-config --cflags hildon-control-panel`
CPPFLAGS_HILDON = -DHILDON `pkg-config --cflags hildon-1`
CPPFLAGS_PLUGIN = $(CPPFLAGS_HILDON) -DHILDON_CP_APPLET \
`pkg-config --cflags libosso` `pkg-config --cflags hildon-control-panel`
-LDFLAGS = `pkg-config --libs gtk+-2.0` $(EXTRA_LDFLAGS)
+LDFLAGS = -Wl,--as-needed `pkg-config --libs gtk+-2.0` $(EXTRA_LDFLAGS)
LDFLAGS_HILDON = `pkg-config --libs hildon-1`
LDFLAGS_PLUGIN = -shared $(LDFLAGS_HILDON) \
`pkg-config --libs libosso` `pkg-config --libs hildon-control-panel`
LDFLAGS_HILDON = `pkg-config --libs hildon-1`
LDFLAGS_PLUGIN = -shared $(LDFLAGS_HILDON) \
`pkg-config --libs libosso` `pkg-config --libs hildon-control-panel`
@$(MAKE) EXTRA_CPPFLAGS='-DFREMANTLE $(EXTRA_CPPFLAGS)' $(PLUGIN)
$(APP): $(app_obj)
@$(MAKE) EXTRA_CPPFLAGS='-DFREMANTLE $(EXTRA_CPPFLAGS)' $(PLUGIN)
$(APP): $(app_obj)
- $(CC) $(CFLAGS) $(LDFLAGS) -o $(APP) $(app_obj)
+ $(CC) $(CFLAGS) -o $(APP) $(app_obj) $(LDFLAGS)
%.app.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
$(HILDON_APP): $(happ_obj)
%.app.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
$(HILDON_APP): $(happ_obj)
- $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_HILDON) \
- -o $(HILDON_APP) $(happ_obj)
+ $(CC) $(CFLAGS) -o $(HILDON_APP) $(happ_obj) \
+ $(LDFLAGS) $(LDFLAGS_HILDON)
%.happ.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(CPPFLAGS_HILDON) -c -o $@ $<
$(PLUGIN): $(plugin_obj)
%.happ.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(CPPFLAGS_HILDON) -c -o $@ $<
$(PLUGIN): $(plugin_obj)
- $(CC) $(CFLAGS) $(CFLAGS_PLUGIN) $(LDFLAGS) $(LDFLAGS_PLUGIN) \
- -o $(PLUGIN) $(plugin_obj)
+ $(CC) $(CFLAGS) $(CFLAGS_PLUGIN) -o $(PLUGIN) $(plugin_obj) \
+ $(LDFLAGS) $(LDFLAGS_PLUGIN)
+
%.plugin.o: %.c
$(CC) $(CFLAGS) $(CFLAGS_PLUGIN) $(CPPFLAGS) $(CPPFLAGS_PLUGIN) \
%.plugin.o: %.c
$(CC) $(CFLAGS) $(CFLAGS_PLUGIN) $(CPPFLAGS) $(CPPFLAGS_PLUGIN) \