Link binaries with -Wl,--as-needed to reduce library dependencies
[browser-switch] / config-ui / Makefile
index ce223ee..8bc3749 100644 (file)
@@ -1,41 +1,74 @@
 CC = gcc
-CFLAGS = -Wall -Os -mcpu=arm1136jf-s -mthumb
-CFLAGS_LIB = -fPIC
-CPPFLAGS = `pkg-config --cflags gtk+-2.0`
-CPPFLAGS_LIB = -DHILDON -DHILDON_CP_APPLET
-LDFLAGS = `pkg-config --libs gtk+-2.0`
-LDFLAGS_LIB = -shared
-PREFIX = /usr/local
+CFLAGS = -Wall -Os $(EXTRA_CFLAGS)
+CFLAGS_PLUGIN = -fPIC
+CPPFLAGS = -I../ `pkg-config --cflags gtk+-2.0` $(EXTRA_CPPFLAGS)
+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 = -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`
+PREFIX = /usr
+
+other_obj = ../configfile.o
 
 APP = browser-switchboard-cp
-app_obj = $(APP).app.o
-LIB = lib$(APP).so
-lib_obj = $(APP).lib.o
+app_obj = $(APP).app.o $(other_obj)
+HILDON_APP = $(APP)-hildon
+happ_obj = $(APP).happ.o $(other_obj)
+PLUGIN = lib$(APP).so
+plugin_obj = $(APP).plugin.o ../configfile.plugin.o
 
-all: $(LIB)
-lib: $(LIB)
+all:
+       @echo 'Usage:'
+       @echo '    make app -- build standalone GTK+ application'
+       @echo '    make diablo-hildon-app -- build standalone Diablo Hildon application'
+       @echo '    make diablo-plugin -- build Diablo hildon-control-panel plugin'
+       @echo '    make fremantle-hildon-app -- build standalone Fremantle Hildon application'
+       @echo '    make fremantle-plugin -- build Fremantle hildon-control-panel plugin'
 app: $(APP)
+diablo-hildon-app: $(HILDON_APP)
+diablo-plugin: $(PLUGIN)
+fremantle-hildon-app:
+       @$(MAKE) EXTRA_CPPFLAGS='-DFREMANTLE $(EXTRA_CPPFLAGS)' $(HILDON_APP)
+fremantle-plugin:
+       @$(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 $@ $<
 
-$(LIB): $(lib_obj)
-       $(CC) $(CFLAGS) $(CFLAGS_LIB) $(LDFLAGS) $(LDFLAGS_LIB) -o $(LIB) $(lib_obj)
+$(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)
+       $(CC) $(CFLAGS) $(CFLAGS_PLUGIN) -o $(PLUGIN) $(plugin_obj) \
+               $(LDFLAGS) $(LDFLAGS_PLUGIN)
+               
 
-%.lib.o: %.c
-       $(CC) $(CFLAGS) $(CFLAGS_LIB) $(CPPFLAGS) $(CPPFLAGS_LIB) -c -o $@ $<
+%.plugin.o: %.c
+       $(CC) $(CFLAGS) $(CFLAGS_PLUGIN) $(CPPFLAGS) $(CPPFLAGS_PLUGIN) \
+               -c -o $@ $<
 
-strip: $(LIB)
-       strip $(LIB)
+strip: strip-plugin
+strip-plugin: $(PLUGIN)
+       strip $(PLUGIN)
 
-install: all
-       mkdir -p $(DESTDIR)$(PREFIX)/share/hildon-control-panel
-       install -c -m 0755 $(LIB) $(DESTDIR)$(PREFIX)/share/hildon-control-panel
+install: install-plugin
+install-plugin: $(PLUGIN)
+       mkdir -p $(DESTDIR)$(PREFIX)/lib/hildon-control-panel
+       mkdir -p $(DESTDIR)$(PREFIX)/share/applications/hildon-control-panel
+       install -c -m 0755 $(PLUGIN) $(DESTDIR)$(PREFIX)/lib/hildon-control-panel
+       install -c -m 0644 $(APP).desktop $(DESTDIR)$(PREFIX)/share/applications/hildon-control-panel
 
 clean:
-       rm -f $(APP) $(LIB) *.o
+       rm -f $(APP) $(HILDON_APP) $(PLUGIN) $(app_obj) $(happ_obj) $(plugin_obj)
 
-.PHONY: strip install lib app
+.PHONY: strip strip-plugin install install-plugin app diablo-hildon-app diablo-plugin fremantle-hildon-app fremantle-plugin