mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Commit bd8948386d
("Since we don't want configure, use gnumake to find
libdivecomputer") was totally broken. Sure, using GNU make features is
fine. But then hiding in that commit is the fact that it also changed
it to use "-ldivecomputer" instead of just linking with the static
libdivecomputer archive.
And that's just a really bad idea. Dynamic linking is useful for things
like libc, where it allows sharing of the code pages across all the
programs using it. For something like libdivecomputer it's just a *bad*
idea, and doesn't even work. The libdivecomputer interfaces aren't
stable enough to make it a good idea even if it *did* work, and the
libdivecomputer "make install" phase doesn't do the proper ldconfig etc
setup anyway.
Static linking is just simpler and better. It also means that the
binary will work even if you move it around to another machine - since
libdivecomputer isn't exactly a "standard library"..
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
114 lines
3.8 KiB
Makefile
114 lines
3.8 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
|
|
DATADIR = $(prefix)/share
|
|
DESKTOPDIR = $(DATADIR)/applications
|
|
ICONPATH = $(DATADIR)/icons/hicolor
|
|
ICONDIR = $(ICONPATH)/scalable/apps
|
|
MANDIR = $(DATADIR)/man/man1
|
|
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(ICONPATH)
|
|
|
|
NAME = subsurface
|
|
ICONFILE = $(NAME).svg
|
|
DESKTOPFILE = $(NAME).desktop
|
|
MANFILES = $(NAME).1
|
|
|
|
# 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 = $(LIBDIVECOMPUTERDIR)/lib/libdivecomputer.a
|
|
else ifneq ($(strip $(libdc-usr)),)
|
|
LIBDIVECOMPUTERDIR = /usr
|
|
LIBDIVECOMPUTERINCLUDES = $(LIBDIVECOMPUTERDIR)/include/libdivecomputer
|
|
LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/lib/libdivecomputer.a
|
|
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)
|
|
$(INSTALL) -m 644 $(MANFILES) $(MANDIR)
|
|
|
|
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)
|