drop the old Makefile and update the docs
This commit is contained in:
parent
2dd0c1469e
commit
04ef9440fb
|
@ -22,21 +22,9 @@ packages:
|
|||
sources:
|
||||
- https://git.sr.ht/~exec64/imv
|
||||
tasks:
|
||||
- configure: |
|
||||
cd imv
|
||||
sed -i -e 's/BACKEND_\(.*\)=no/BACKEND_\1=yes/' config.mk
|
||||
cat config.mk
|
||||
- make_gcc: |
|
||||
cd imv
|
||||
CC=gcc BUILDDIR=gcc make
|
||||
CC=gcc BUILDDIR=gcc make check
|
||||
- make_clang: |
|
||||
cd imv
|
||||
CC=clang BUILDDIR=clang make
|
||||
CC=clang BUILDDIR=clang make check
|
||||
- meson_gcc: |
|
||||
- gcc: |
|
||||
CC=gcc meson imv build_gcc -D auto_features=enabled
|
||||
CC=gcc ninja -C build_gcc test
|
||||
- meson_clang: |
|
||||
- clang: |
|
||||
CC=clang meson imv build_clang -D auto_features=enabled
|
||||
CC=clang ninja -C build_clang test
|
||||
|
|
|
@ -22,27 +22,16 @@ packages:
|
|||
sources:
|
||||
- https://git.sr.ht/~exec64/imv
|
||||
tasks:
|
||||
- configure: |
|
||||
cd imv
|
||||
sed -i -e 's/BACKEND_\(.*\)=no/BACKEND_\1=yes/' config.mk
|
||||
# libnsgif isn't packaged by debian
|
||||
sed -i -e 's/BACKEND_LIBNSGIF=yes/BACKEND_LIBNSGIF=no/' config.mk
|
||||
cat config.mk
|
||||
- make_gcc: |
|
||||
cd imv
|
||||
CC=gcc BUILDDIR=gcc make
|
||||
CC=gcc BUILDDIR=gcc make check
|
||||
- make_clang: |
|
||||
cd imv
|
||||
CC=clang BUILDDIR=clang make
|
||||
CC=clang BUILDDIR=clang make check
|
||||
- dummy: |
|
||||
true
|
||||
#FIXME:
|
||||
# the old meson package in debian has a bug and crashes with
|
||||
# our meson.build; re-enable this once debian packages a version
|
||||
# newer than 0.49.2
|
||||
# - meson_gcc: |
|
||||
# libnsgif isn't packaged by debian
|
||||
# - gcc: |
|
||||
# CC=gcc meson imv build_gcc -D auto_features=enabled -D libnsgif=disabled
|
||||
# CC=gcc ninja -C build_gcc test
|
||||
# - meson_clang: |
|
||||
# - clang: |
|
||||
# CC=clang meson imv build_clang -D auto_features=enabled -D libnsgif=disabled
|
||||
# CC=clang ninja -C build_clang test
|
||||
|
|
|
@ -22,23 +22,10 @@ packages:
|
|||
sources:
|
||||
- https://git.sr.ht/~exec64/imv
|
||||
tasks:
|
||||
- configure: |
|
||||
cd imv
|
||||
sed -i -e 's/BACKEND_\(.*\)=no/BACKEND_\1=yes/' config.mk
|
||||
# libnsgif isn't packaged by fedora
|
||||
sed -i -e 's/BACKEND_LIBNSGIF=yes/BACKEND_LIBNSGIF=no/' config.mk
|
||||
cat config.mk
|
||||
- make_gcc: |
|
||||
cd imv
|
||||
CC=gcc BUILDDIR=gcc make
|
||||
CC=gcc BUILDDIR=gcc make check
|
||||
- make_clang: |
|
||||
cd imv
|
||||
CC=clang BUILDDIR=clang make
|
||||
CC=clang BUILDDIR=clang make check
|
||||
- meson_gcc: |
|
||||
- gcc: |
|
||||
CC=gcc meson imv build_gcc -D auto_features=enabled -D libnsgif=disabled
|
||||
CC=gcc ninja -C build_gcc test
|
||||
- meson_clang: |
|
||||
- clang: |
|
||||
CC=clang meson imv build_clang -D auto_features=enabled -D libnsgif=disabled
|
||||
CC=clang ninja -C build_clang test
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
image: freebsd/latest
|
||||
packages:
|
||||
- devel/gmake
|
||||
- devel/icu
|
||||
- devel/meson
|
||||
- devel/pkgconf
|
||||
|
@ -19,12 +18,6 @@ packages:
|
|||
sources:
|
||||
- https://git.sr.ht/~exec64/imv
|
||||
tasks:
|
||||
- make: |
|
||||
cd imv
|
||||
sed -i -e 's/BACKEND_\(.*\)=no/BACKEND_\1=yes/' config.mk
|
||||
cat config.mk
|
||||
gmake
|
||||
gmake check
|
||||
- meson: |
|
||||
meson imv build -D auto_features=enabled -D c_link_args='-L/usr/local/lib'
|
||||
ninja -C build test
|
||||
|
|
|
@ -22,23 +22,10 @@ packages:
|
|||
sources:
|
||||
- https://git.sr.ht/~exec64/imv
|
||||
tasks:
|
||||
- configure: |
|
||||
cd imv
|
||||
sed -i -e 's/BACKEND_\(.*\)=no/BACKEND_\1=yes/' config.mk
|
||||
# libnsgif isn't packaged by ubuntu
|
||||
sed -i -e 's/BACKEND_LIBNSGIF=yes/BACKEND_LIBNSGIF=no/' config.mk
|
||||
cat config.mk
|
||||
- make_gcc: |
|
||||
cd imv
|
||||
CC=gcc BUILDDIR=gcc make
|
||||
CC=gcc BUILDDIR=gcc make check
|
||||
- make_clang: |
|
||||
cd imv
|
||||
CC=clang BUILDDIR=clang make
|
||||
CC=clang BUILDDIR=clang make check
|
||||
- meson_gcc: |
|
||||
- gcc: |
|
||||
CC=gcc meson imv build_gcc -D auto_features=enabled -D libnsgif=disabled
|
||||
CC=gcc ninja -C build_gcc test
|
||||
- meson_clang: |
|
||||
- clang: |
|
||||
CC=clang meson imv build_clang -D auto_features=enabled -D libnsgif=disabled
|
||||
CC=clang ninja -C build_clang test
|
||||
|
|
187
Makefile
187
Makefile
|
@ -1,187 +0,0 @@
|
|||
.PHONY: all imv debug clean check install uninstall doc
|
||||
|
||||
include config.mk
|
||||
|
||||
PREFIX ?= /usr
|
||||
BINPREFIX ?= $(PREFIX)/bin
|
||||
MANPREFIX ?= $(PREFIX)/share/man
|
||||
DATAPREFIX ?= $(PREFIX)/share
|
||||
CONFIGPREFIX ?= /etc
|
||||
|
||||
INSTALL_DATA ?= install -m 0644
|
||||
INSTALL_MAN ?= install -m 0644
|
||||
INSTALL_PROGRAM ?= install -m 0755
|
||||
INSTALL_SCRIPT ?= install -m 0755
|
||||
|
||||
override CFLAGS += -std=c99 -W -Wall -Wpedantic -Wextra $(shell pkg-config --cflags pangocairo)
|
||||
override CPPFLAGS += -D_XOPEN_SOURCE=700
|
||||
override LIBS := -lGL -lpthread -lxkbcommon $(shell pkg-config --libs pangocairo) $(shell pkg-config --libs icu-io)
|
||||
|
||||
BUILDDIR ?= build
|
||||
TARGET_WAYLAND = $(BUILDDIR)/imv-wayland
|
||||
TARGET_X11 = $(BUILDDIR)/imv-x11
|
||||
TARGET_MSG = $(BUILDDIR)/imv-msg
|
||||
|
||||
ifeq ($(WINDOWS),wayland)
|
||||
TARGETS := $(TARGET_WAYLAND) $(TARGET_MSG)
|
||||
else ifeq ($(WINDOWS),x11)
|
||||
TARGETS := $(TARGET_X11) $(TARGET_MSG)
|
||||
else ifeq ($(WINDOWS),all)
|
||||
TARGETS := $(TARGET_WAYLAND) $(TARGET_X11) $(TARGET_MSG)
|
||||
endif
|
||||
|
||||
SOURCES := src/main.c
|
||||
|
||||
SOURCES += src/binds.c
|
||||
SOURCES += src/bitmap.c
|
||||
SOURCES += src/canvas.c
|
||||
SOURCES += src/commands.c
|
||||
SOURCES += src/console.c
|
||||
SOURCES += src/image.c
|
||||
SOURCES += src/imv.c
|
||||
SOURCES += src/ini.c
|
||||
SOURCES += src/ipc.c
|
||||
SOURCES += src/ipc_common.c
|
||||
SOURCES += src/keyboard.c
|
||||
SOURCES += src/list.c
|
||||
SOURCES += src/log.c
|
||||
SOURCES += src/navigator.c
|
||||
SOURCES += src/source.c
|
||||
SOURCES += src/viewport.c
|
||||
|
||||
WL_SOURCES = src/wl_window.c src/xdg-shell-protocol.c
|
||||
WL_LIBS = -lwayland-client -lwayland-egl -lEGL -lrt
|
||||
|
||||
X11_SOURCES = src/x11_window.c
|
||||
X11_LIBS = -lX11 -lGL -lGLU -lxcb -lxkbcommon-x11
|
||||
|
||||
MSG_SOURCES = src/imv_msg.c src/ipc_common.c
|
||||
MSG_LIBS =
|
||||
|
||||
# Add backends to build as configured
|
||||
ifeq ($(BACKEND_FREEIMAGE),yes)
|
||||
SOURCES += src/backend_freeimage.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_FREEIMAGE
|
||||
override LIBS += -lfreeimage
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND_LIBTIFF),yes)
|
||||
SOURCES += src/backend_libtiff.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_LIBTIFF
|
||||
override LIBS += -ltiff
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND_LIBPNG),yes)
|
||||
SOURCES += src/backend_libpng.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_LIBPNG
|
||||
override LIBS += -lpng
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND_LIBJPEG),yes)
|
||||
SOURCES += src/backend_libjpeg.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_LIBJPEG
|
||||
override LIBS += -lturbojpeg
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND_LIBRSVG),yes)
|
||||
SOURCES += src/backend_librsvg.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_LIBRSVG $(shell pkg-config --cflags librsvg-2.0)
|
||||
override LIBS += $(shell pkg-config --libs librsvg-2.0)
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND_LIBNSGIF),yes)
|
||||
SOURCES += src/backend_libnsgif.c
|
||||
override CPPFLAGS += -DIMV_BACKEND_LIBNSGIF $(shell pkg-config --cflags libnsgif)
|
||||
override LIBS += $(shell pkg-config --libs libnsgif)
|
||||
endif
|
||||
|
||||
|
||||
TEST_SOURCES := test/list.c test/navigator.c
|
||||
|
||||
OBJECTS := $(patsubst src/%.c,$(BUILDDIR)/%.o,$(SOURCES))
|
||||
WL_OBJECTS := $(patsubst src/%.c,$(BUILDDIR)/%.o,$(WL_SOURCES))
|
||||
X11_OBJECTS := $(patsubst src/%.c,$(BUILDDIR)/%.o,$(X11_SOURCES))
|
||||
MSG_OBJECTS := $(patsubst src/%.c,$(BUILDDIR)/%.o,$(MSG_SOURCES))
|
||||
|
||||
TESTS := $(patsubst test/%.c,$(BUILDDIR)/test_%,$(TEST_SOURCES))
|
||||
|
||||
VERSION != git describe --dirty --always --tags 2> /dev/null || echo v4.1.0
|
||||
|
||||
override CPPFLAGS += -DIMV_VERSION=\""$(VERSION)"\"
|
||||
|
||||
TFLAGS ?= -g $(CFLAGS) $(CPPFLAGS) $(shell pkg-config --cflags cmocka)
|
||||
TLIBS := $(LIBS) $(shell pkg-config --libs cmocka)
|
||||
|
||||
all: imv doc
|
||||
|
||||
imv: $(TARGETS)
|
||||
|
||||
$(TARGET_WAYLAND): $(OBJECTS) $(WL_OBJECTS)
|
||||
$(CC) -o $@ $^ $(LIBS) $(WL_LIBS) $(LDFLAGS)
|
||||
|
||||
$(TARGET_X11): $(OBJECTS) $(X11_OBJECTS)
|
||||
$(CC) -o $@ $^ $(LIBS) $(X11_LIBS) $(LDFLAGS)
|
||||
|
||||
$(TARGET_MSG): $(MSG_OBJECTS)
|
||||
$(CC) -o $@ $^ $(MSG_LIBS) $(LDFLAGS)
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g -pg
|
||||
debug: $(TARGETS)
|
||||
|
||||
$(OBJECTS): | $(BUILDDIR)
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p $(BUILDDIR)
|
||||
|
||||
$(BUILDDIR)/%.o: src/%.c Makefile
|
||||
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
|
||||
|
||||
$(BUILDDIR)/test_%: test/%.c src/dummy_window.c $(filter-out src/main.c, $(SOURCES))
|
||||
$(CC) -o $@ -Isrc $(TFLAGS) $^ $(LDFLAGS) $(TLIBS)
|
||||
|
||||
check: $(BUILDDIR) $(TESTS)
|
||||
for t in $(TESTS); do $$t; done
|
||||
|
||||
clean:
|
||||
$(RM) -Rf $(BUILDDIR)
|
||||
$(RM) doc/imv.1 doc/imv-msg.1 doc/imv.5
|
||||
|
||||
doc: doc/imv.1 doc/imv-msg.1 doc/imv.5
|
||||
|
||||
doc/%: doc/%.txt
|
||||
a2x --no-xmllint --doctype manpage --format manpage $<
|
||||
|
||||
install: $(TARGETS) doc
|
||||
mkdir -p $(DESTDIR)$(BINPREFIX)
|
||||
ifeq ($(WINDOWS),wayland)
|
||||
$(INSTALL_PROGRAM) $(TARGET_WAYLAND) $(DESTDIR)$(BINPREFIX)/imv
|
||||
else ifeq ($(WINDOWS),x11)
|
||||
$(INSTALL_PROGRAM) $(TARGET_X11) $(DESTDIR)$(BINPREFIX)/imv
|
||||
else ifeq ($(WINDOWS),all)
|
||||
$(INSTALL_PROGRAM) $(TARGET_WAYLAND) $(DESTDIR)$(BINPREFIX)/imv-wayland
|
||||
$(INSTALL_PROGRAM) $(TARGET_X11) $(DESTDIR)$(BINPREFIX)/imv-x11
|
||||
$(INSTALL_SCRIPT) files/imv $(DESTDIR)$(BINPREFIX)/imv
|
||||
endif
|
||||
$(INSTALL_PROGRAM) $(TARGET_MSG) $(DESTDIR)$(BINPREFIX)/imv-msg
|
||||
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
||||
$(INSTALL_MAN) doc/imv.1 $(DESTDIR)$(MANPREFIX)/man1/imv.1
|
||||
$(INSTALL_MAN) doc/imv-msg.1 $(DESTDIR)$(MANPREFIX)/man1/imv-msg.1
|
||||
mkdir -p $(DESTDIR)$(MANPREFIX)/man5
|
||||
$(INSTALL_MAN) doc/imv.5 $(DESTDIR)$(MANPREFIX)/man5/imv.5
|
||||
mkdir -p $(DESTDIR)$(DATAPREFIX)/applications
|
||||
$(INSTALL_DATA) files/imv.desktop $(DESTDIR)$(DATAPREFIX)/applications/imv.desktop
|
||||
mkdir -p $(DESTDIR)$(CONFIGPREFIX)
|
||||
$(INSTALL_DATA) files/imv_config $(DESTDIR)$(CONFIGPREFIX)/imv_config
|
||||
|
||||
uninstall:
|
||||
ifeq ($(WINDOWS),all)
|
||||
$(RM) $(DESTDIR)$(BINPREFIX)/imv-wayland
|
||||
$(RM) $(DESTDIR)$(BINPREFIX)/imv-x11
|
||||
endif
|
||||
$(RM) $(DESTDIR)$(BINPREFIX)/imv
|
||||
$(RM) $(DESTDIR)$(BINPREFIX)/imv-msg
|
||||
$(RM) $(DESTDIR)$(MANPREFIX)/man1/imv.1
|
||||
$(RM) $(DESTDIR)$(MANPREFIX)/man1/imv-msg.1
|
||||
$(RM) $(DESTDIR)$(MANPREFIX)/man5/imv.5
|
||||
$(RM) $(DESTDIR)$(DATAPREFIX)/applications/imv.desktop
|
||||
@echo "$(DESTDIR)$(CONFIGPREFIX)/imv_config has not been removed. Please remove it manually."
|
23
PACKAGERS.md
23
PACKAGERS.md
|
@ -3,20 +3,23 @@
|
|||
This document is a quick summary of all you need to know to package imv for
|
||||
your favourite operating system.
|
||||
|
||||
## 1. Select window systems to support
|
||||
## Configuring `imv`
|
||||
|
||||
### 1. Select window systems to support
|
||||
|
||||
Your options here are Wayland or X11, or both. By default both are included,
|
||||
with a separate binary for each being built. `/usr/bin/imv` will be a script
|
||||
that checks for a Wayland compositor before running the appropriate binary.
|
||||
|
||||
If you only care about one of these, you can specify to build only one of these
|
||||
in [config.mk](config.mk), in which case only that binary shall be packaged
|
||||
without the need for a launcher script to select between the two.
|
||||
by passing `-D windows=wayland` to `meson`, in which case only that
|
||||
binary shall be packaged without the need for a launcher script to
|
||||
select between the two.
|
||||
|
||||
Alternatively, you could provide separate packages for X11 and Wayland that
|
||||
act as alternatives to each other.
|
||||
|
||||
## 2. Select backends to include
|
||||
### 2. Select backends to include
|
||||
|
||||
imv supports multiple "backends" in a plugin style architecture. Each backend
|
||||
provides support for different image formats using different underlying
|
||||
|
@ -26,17 +29,19 @@ formats you need support for, and your licensing requirements.
|
|||
imv is published under the MIT license, but its backends may have different
|
||||
licensing requirements.
|
||||
|
||||
You can configure the backends to use in [config.mk](config.mk). Sensible
|
||||
defaults are pre-configured to provide maximum coverage with the least overlap
|
||||
and fewest dependencies.
|
||||
By default, the libraries available are detected and support for them is
|
||||
automatically enabled, but you can enable or disable specific ones by
|
||||
passing `-D freeimage=enabled` or `-D libtiff=disabled`.
|
||||
You can also make sure all the backends are enabled by passing
|
||||
`-D auto_features=enabled`.
|
||||
|
||||
## 3. $ make && make install
|
||||
## Building `imv`
|
||||
|
||||
Once your backends have been configured and you've confirmed the library
|
||||
each backend uses is installed, you can simply follow the Installation section
|
||||
of the [README](README.md) to build imv.
|
||||
|
||||
## 4. Package
|
||||
## Packaging `imv`
|
||||
|
||||
Package the resulting binary and man pages in your operating system's native
|
||||
package format.
|
||||
|
|
18
README.md
18
README.md
|
@ -133,21 +133,21 @@ Installation
|
|||
| libpng | | Optional. Provides PNG support. |
|
||||
| libjpeg-turbo | | Optional. Provides JPEG support. |
|
||||
| librsvg | >=v2.44 | Optional. Provides SVG support. |
|
||||
| libnsgif | | Optional. Provides GIF support. |
|
||||
| libnsgif | | Optional. Provides animated GIF support. |
|
||||
|
||||
Dependencies are determined by which backends and window systems are enabled
|
||||
when building `imv`. You can find a summary of which backends are available and
|
||||
control which ones `imv` is built with in [config.mk](config.mk)
|
||||
when building `imv`. You can find a summary of which backends are available
|
||||
in [meson_options.txt](meson_options.txt)
|
||||
|
||||
$ $EDITOR config.mk
|
||||
$ make
|
||||
# make install
|
||||
$ meson builddir/
|
||||
$ ninja -C builddir/
|
||||
# ninja -C builddir/ install
|
||||
|
||||
Macro `PREFIX` controls installation prefix. If more control over installation
|
||||
paths is required, macros `BINPREFIX`, `MANPREFIX` and `DATAPREFIX` are
|
||||
`--prefix` controls installation prefix. If more control over installation
|
||||
paths is required, `--bindir`, `--mandir` and `--datadir` are
|
||||
available. Eg. to install `imv` to home directory, run:
|
||||
|
||||
$ BINPREFIX=~/bin PREFIX=~/.local make install
|
||||
$ meson --bindir=~/bin --prefix=~/.local
|
||||
|
||||
License
|
||||
-------
|
||||
|
|
45
config.mk
45
config.mk
|
@ -1,45 +0,0 @@
|
|||
# Configure window system to use
|
||||
|
||||
#Choices:
|
||||
# all - Build both, determine which to use at runtime
|
||||
# wayland - Only provide Wayland support
|
||||
# x11 - Only provide X11 support
|
||||
WINDOWS=all
|
||||
|
||||
# Configure available backends:
|
||||
|
||||
# FreeImage http://freeimage.sourceforge.net
|
||||
# provides: png, jpg, animated gif, raw, psd, bmp, tiff, webp, etc.
|
||||
# depends: libjpeg, openexr, openjpeg2, libwebp, libraw, jxrlib
|
||||
# license: FIPL v1.0
|
||||
BACKEND_FREEIMAGE=yes
|
||||
|
||||
# libtiff
|
||||
# provides: tiff
|
||||
# depends: libjpeg zlib xz zstd
|
||||
# license: MIT
|
||||
BACKEND_LIBTIFF=no
|
||||
|
||||
# libpng http://www.libpng.org/pub/png/libpng.html
|
||||
# provides: png
|
||||
# depends: zlib
|
||||
# license: libpng license
|
||||
BACKEND_LIBPNG=no
|
||||
|
||||
# libjpeg-turbo https://libjpeg-turbo.org/
|
||||
# provides: jpeg
|
||||
# depends: none
|
||||
# license: modified bsd
|
||||
BACKEND_LIBJPEG=no
|
||||
|
||||
# librsvg https://wiki.gnome.org/Projects/LibRsvg
|
||||
# provides: svg
|
||||
# depends: gdk-pixbuf2 pango libcroco
|
||||
# license: LGPL
|
||||
BACKEND_LIBRSVG=yes
|
||||
|
||||
# libnsgif https://www.netsurf-browser.org/projects/libnsgif/
|
||||
# provides: animated gif
|
||||
# depends: none
|
||||
# license: MIT
|
||||
BACKEND_LIBNSGIF=no
|
Loading…
Reference in a new issue