mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 06:33:24 +00:00
7df7518625
I'm trying to get subsurface to get closer to becoming a "regular desktop application"; so far this is based on the recommendations and guidelines on OpenSUSE and Fedora. The icon is now named subsurface.svg and make install installs it in the correct location. At runtime subsurface first checks if an icon is installed and if it is it uses that - otherwise it falls back to the old code that tries to read the svg file from the current directory. We also install a subsurface.desktop file Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
110 lines
3.7 KiB
Makefile
110 lines
3.7 KiB
Makefile
VERSION=1.0
|
|
|
|
CC=gcc
|
|
CFLAGS=-Wall -Wno-pointer-sign -g
|
|
INSTALL=install
|
|
|
|
# these locations seem to work for SuSE and Fedora
|
|
# prefix = $(HOME)
|
|
prefix = /usr
|
|
DESTDIR = $(prefix)/bin
|
|
DESKTOPDIR = $(prefix)/share/applications
|
|
ICONPATH = $(prefix)/share/icons/hicolor
|
|
ICONDIR = $(ICONPATH)/scalable/apps
|
|
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(ICONPATH)
|
|
|
|
NAME = subsurface
|
|
ICONFILE = $(NAME).svg
|
|
DESKTOPFILE = $(NAME).desktop
|
|
|
|
# find libdivecomputer; we don't trust pkg-config here given how young
|
|
# libdivecomputer still is - so we check /usr/local and /usr and then we
|
|
# give up. You can override by simply setting it here
|
|
#
|
|
libdc-local := $(wildcard /usr/local/include/libdivecomputer/*)
|
|
libdc-usr := $(wildcard /usr/include/libdivecomputer/*)
|
|
|
|
ifneq ($(strip $(libdc-local)),)
|
|
LIBDIVECOMPUTERDIR = /usr/local
|
|
LIBDIVECOMPUTERINCLUDES = $(LIBDIVECOMPUTERDIR)/include/libdivecomputer
|
|
LIBDIVECOMPUTERARCHIVE = -L$(LIBDIVECOMPUTERDIR)/lib -ldivecomputer
|
|
else ifneq ($(strip $(libdc-usr)),)
|
|
LIBDIVECOMPUTERDIR = /usr
|
|
LIBDIVECOMPUTERINCLUDES = $(LIBDIVECOMPUTERDIR)/include/libdivecomputer
|
|
LIBDIVECOMPUTERARCHIVE = -ldivecomputer
|
|
else
|
|
$(error Cannot find libdivecomputer - please edit Makefile)
|
|
endif
|
|
|
|
# Libusb-1.0 is only required if libdivecomputer was built with it.
|
|
# And libdivecomputer is only built with it if libusb-1.0 is
|
|
# installed. So get libusb if it exists, but don't complain
|
|
# about it if it doesn't.
|
|
LIBUSB = $(shell pkg-config --libs libusb-1.0 2> /dev/null)
|
|
|
|
LIBXML2 = $(shell xml2-config --libs)
|
|
LIBGTK = $(shell pkg-config --libs gtk+-2.0 glib-2.0 gconf-2.0)
|
|
LIBDIVECOMPUTER = $(LIBDIVECOMPUTERARCHIVE) $(LIBUSB)
|
|
|
|
LIBS = $(LIBXML2) $(LIBGTK) $(LIBDIVECOMPUTER) -lpthread
|
|
|
|
OBJS = main.o dive.o profile.o info.o equipment.o divelist.o \
|
|
parse-xml.o save-xml.o libdivecomputer.o print.o uemis.o \
|
|
gtk-gui.o
|
|
|
|
$(NAME): $(OBJS)
|
|
$(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
|
|
|
|
install: $(NAME)
|
|
$(INSTALL) -d -m 755 $(DESTDIR)
|
|
$(INSTALL) $(NAME) $(DESTDIR)
|
|
$(INSTALL) -d -m 755 $(DESKTOPDIR)
|
|
$(INSTALL) $(DESKTOPFILE) $(DESKTOPDIR)
|
|
$(INSTALL) -d -m 755 $(ICONDIR)
|
|
$(INSTALL) $(ICONFILE) $(ICONDIR)
|
|
$(gtk_update_icon_cache)
|
|
|
|
parse-xml.o: parse-xml.c dive.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0` -c `xml2-config --cflags` parse-xml.c
|
|
|
|
save-xml.o: save-xml.c dive.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0` -c save-xml.c
|
|
|
|
dive.o: dive.c dive.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0` -c dive.c
|
|
|
|
main.o: main.c dive.h display.h divelist.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0 gconf-2.0` \
|
|
-c main.c
|
|
|
|
profile.o: profile.c dive.h display.h divelist.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c profile.c
|
|
|
|
info.o: info.c dive.h display.h display-gtk.h divelist.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c info.c
|
|
|
|
equipment.o: equipment.c dive.h display.h divelist.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c equipment.c
|
|
|
|
divelist.o: divelist.c dive.h display.h divelist.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c divelist.c
|
|
|
|
print.o: print.c dive.h display.h display-gtk.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c print.c
|
|
|
|
libdivecomputer.o: libdivecomputer.c dive.h display.h display-gtk.h libdivecomputer.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` \
|
|
-I$(LIBDIVECOMPUTERINCLUDES) \
|
|
-c libdivecomputer.c
|
|
|
|
gtk-gui.o: gtk-gui.c dive.h display.h divelist.h display-gtk.h libdivecomputer.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0 gconf-2.0` \
|
|
-I$(LIBDIVECOMPUTERINCLUDES) \
|
|
-DVERSION_STRING='"v$(VERSION)"' \
|
|
-c gtk-gui.c
|
|
|
|
uemis.o: uemis.c uemis.h
|
|
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c uemis.c
|
|
|
|
clean:
|
|
rm -f $(OBJS) *~ $(NAME)
|