Initial commit
[fillmore] / marina.mk
1 VALAC = valac
2 MIN_VALAC_VERSION = 0.9.1
3 # defaults that may be overridden by configure.mk
4 PREFIX=/usr/local
5
6 INSTALL_PROGRAM = install
7 INSTALL_DATA = install -m 644
8
9 ifndef MARINA_VAPI
10 MARINA_VAPI = ../marina/marina/marina.vapi
11 endif
12
13 ifdef USE_MARINA_VAPI
14 TEMP_MARINA_VAPI = $(MARINA_VAPI)
15 endif
16
17 VAPI_DIRS = \
18         ../../vapi
19
20 HEADER_DIRS = \
21         ../../vapi
22
23 EXT_PKGS = \
24         gee-1.0 \
25         gdk-x11-2.0 \
26         gstreamer-0.10 \
27         gstreamer-base-0.10 \
28         gstreamer-controller-0.10 \
29         gstreamer-interfaces-0.10 \
30         gstreamer-pbutils-0.10 \
31         gtk+-2.0 \
32   hildon-1 \
33   hildon-fm-2
34         
35
36 EXT_PKG_VERSIONS = \
37         gtk+-2.0 >= 2.14.0 \
38         gee-1.0 >= 0.5.0 \
39         gdk-x11-2.0 >= 2.14.7 \
40         gstreamer-0.10 >= 0.10.25 \
41         gstreamer-base-0.10 >= 0.10.25 \
42         gstreamer-controller-0.10 >= 0.10.25 \
43         gstreamer-interfaces-0.10 >= 0.10.25 \
44         gstreamer-pbutils-0.10 >= 0.10.25
45
46 PKGS = $(EXT_PKGS) $(LOCAL_PKGS)
47
48 EXPANDED_SRC_FILES = $(foreach src,$(SRC_FILES),./$(src))
49 EXPANDED_C_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.c)))
50 EXPANDED_SAVE_TEMPS_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.vala.c)))
51 EXPANDED_OBJ_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.o)))
52
53 EXPANDED_VAPI_FILES = $(foreach vapi,$(VAPI_FILES),vapi/$(vapi))
54 EXPANDED_SRC_HEADER_FILES = $(foreach header,$(SRC_HEADER_FILES),vapi/$(header))
55 EXPANDED_RESOURCE_FILES = $(foreach res,$(RESOURCE_FILES),ui/$(res))
56 VALA_STAMP = $(BUILD_DIR)/.stamp
57
58 ifdef PROGRAM
59 DEFINES = _PROGRAM_NAME='"$(PROGRAM_NAME)"'
60 endif
61
62 ifdef LIBRARY
63 DEFINES = _VERSION='"$(VERSION)"' _PREFIX='"$(PREFIX)"'
64 endif
65
66 VALA_CFLAGS = `pkg-config --cflags $(EXT_PKGS)` $(foreach hdir,$(HEADER_DIRS),-I$(hdir)) \
67         $(foreach def,$(DEFINES),-D$(def))
68
69 # setting CFLAGS in configure.mk overrides build type
70 ifndef CFLAGS
71 ifdef BUILD_DEBUG
72 CFLAGS = -O0 -g -pipe -fPIC
73 else
74 CFLAGS = -O2 -g -pipe -fPIC
75 endif
76 endif
77
78 VALAFLAGS = -g --enable-checking --thread $(USER_VALAFLAGS)
79
80 # We touch the C file so that we have a better chance of a valid executable.  Bug #1778
81 $(EXPANDED_C_FILES): $(VALA_STAMP)
82         touch $@
83
84 $(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile
85         $(CC) -c $(VALA_CFLAGS) $(CFLAGS) -o $@ $<
86
87 install:
88         mkdir -p $(DESTDIR)$(PREFIX)/bin
89         $(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin
90         mkdir -p $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME)/resources
91         $(INSTALL_DATA) ../../resources/* $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME)/resources
92         mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
93         $(INSTALL_DATA) ../../resources/$(PROGRAM_NAME).svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
94 ifndef DISABLE_ICON_UPDATE
95         -gtk-update-icon-cache -f -t $(DESTDIR)$(PREFIX)/share/icons/hicolor || :
96 endif
97         mkdir -p $(DESTDIR)$(PREFIX)/share/applications
98         $(INSTALL_DATA) ../../misc/$(PROGRAM_NAME).desktop $(DESTDIR)$(PREFIX)/share/applications
99 ifndef DISABLE_DESKTOP_UPDATE
100         -update-desktop-database || :
101 endif
102         mkdir -p $(DESTDIR)$(PREFIX)/share/mime/packages
103         $(INSTALL_DATA) ../../misc/$(PROGRAM_NAME).xml $(DESTDIR)$(PREFIX)/share/mime/packages
104         -update-mime-database $(DESTDIR)$(PREFIX)/share/mime
105
106 uninstall:
107         rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_NAME)
108         rm -fr $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME)
109         rm -fr $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/$(PROGRAM_NAME).svg
110         rm -f $(DESTDIR)$(PREFIX)/share/applications/$(PROGRAM_NAME).desktop
111         rm -f $(DESTDIR)$(PREFIX)/share/mime/packages/$(PROGRAM_NAME).xml
112         -update-mime-database $(DESTDIR)$(PREFIX)/share/mime
113
114 $(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(EXPANDED_SRC_HEADER_FILES) Makefile \
115         $(CONFIG_IN) $(TEMP_MARINA_VAPI)
116 ifndef PROGRAM
117 ifndef LIBRARY
118         @echo 'You must define either PROGRAM or LIBRARY in makefile'; exit 1
119 endif
120 endif
121 ifdef PROGRAM
122 ifdef LIBRARY
123         @echo 'Both program and library are defined.  This is invalid.'; exit 1
124 endif
125 endif
126         @ ../../minver `valac --version | awk '{print $$2}'` $(MIN_VALAC_VERSION) || ( echo '$(PROGRAM)$(LIBRARY) requires Vala compiler $(MIN_VALAC_VERSION) or greater.  You are running' `valac --version` '\b.'; exit 1 )
127 ifndef ASSUME_PKGS
128 ifdef EXT_PKG_VERSIONS
129         pkg-config --print-errors --exists '$(EXT_PKG_VERSIONS)'
130 else ifdef EXT_PKGS
131         pkg-config --print-errors --exists $(EXT_PKGS)
132 endif
133 endif
134         mkdir -p $(BUILD_DIR)
135         $(VALAC) $(LIBRARY_NAME) --ccode --directory=$(BUILD_DIR) --basedir=src $(VALAFLAGS) \
136         $(foreach header,$(HEADER_FILES), -H $(header)) \
137         $(foreach pkg,$(PKGS),--pkg=$(pkg)) \
138         $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
139         $(foreach def,$(DEFINES),-X -D$(def)) \
140         $(foreach hdir,$(HEADER_DIRS),-X -I$(hdir)) \
141         $(VAPI_FILES) \
142         $(VALA_DEFINES) \
143         $(TEMP_MARINA_VAPI) \
144         $(EXPANDED_SRC_FILES)
145         touch $@
146
147 ifdef LIBRARY
148 $(LIBRARY): $(EXPANDED_OBJ_FILES) $(RESOURCES) 
149         $(AR) $(ARFLAGS) $@ $?
150 endif
151
152 ifdef PROGRAM
153 $(PROGRAM): $(EXPANDED_OBJ_FILES) $(MARINA_DEPEND)
154         $(CC) $(EXPANDED_OBJ_FILES) -lm $(CFLAGS) $(VALA_LDFLAGS) -export-dynamic -o $@
155 ifdef GLADE_NAME
156         $(CC) $(EXPANDED_OBJ_FILES) -lm $(CFLAGS) $(VALA_LDFLAGS) -export-dynamic -shared -o $(GLADE_NAME)
157 endif
158 clean:
159         rm -f $(EXPANDED_C_FILES)
160         rm -f $(EXPANDED_SAVE_TEMPS_FILES)
161         rm -f $(EXPANDED_OBJ_FILES)
162         rm -f $(VALA_STAMP)
163         rm -rf $(PROGRAM)-$(VERSION)
164         rm -f $(PROGRAM)
165 ifdef GLADE_NAME
166         rm -f $(GLADE_NAME)
167 endif
168 endif
169
170
171 cleantemps:
172         rm -f $(EXPANDED_C_FILES)
173         rm -f $(EXPANDED_SAVE_TEMPS_FILES)
174         rm -f $(EXPANDED_OBJ_FILES)
175         rm -f $(VALA_STAMP)
176