Commit graph

295 commits

Author SHA1 Message Date
TAAPArthur 25a3114709 Rework the build system (#19)
* Added simple configure script

Added simple script to autodetect if optional dependencies are installed
and enable/disable them as needed. Note this solution uses the compiler
directly instead of an external program like pkgconfig so it doesn't
require any extra dependencies. It is intended to work with any
arbitrary compiler; it has been tested with tcc and gcc.

There are some "breaking" changes hidden here
- HAVE_GIFLIB was renamed to HAVE_LIBGIF to match HAVE_LIBEXIF
- Simply typing `make` will no longer try to build with optional
  dependencies

* use implicit RM variable

* General clean-up in configure

- Use printf instead of echo
- Format style

* honor env PREFIX, use LDLIBS

* Revert "General clean-up in configure"

This reverts commit 8683c179dbf273a330f9a224a4d481a7bea42c5f.

* honor env LDFLAGS if set

* Don't set OPTIONAL_LIBS in configure

* make OBJ all caps

* follow suckless style build system

- remove configure script.
- HAVE_LIBGIF and HAVE_LIBEXIF defaults back to 1
- unload several varibales onto config.mk
- make version all-caps
- add -O2 optimization
- use CPPFLAGS for includes and defines

* Revert "follow suckless style build system"

This reverts commit 8bf75b1f68d72df349edba8d998d4659dd956dd8.

* Generate config.mk from make

* Inlined configure in Makefile

* update docs

* cleanups

- changes to config.mk should trigger a rebuild
- remove potentially confusing variables form Makefile

* Use install instead of mkdir/cp/chmod when sensible

* fixup! Inlined configure in Makefile

* Don't generate config.mk on rm -f *.o sxiv

* update docs and cleanups

- make config.mk silent
- mention editing config.mk in README

* fallback to 0 if user edits config.mk in unexpected way

* add comment on config.mk

* remove invalid comment

configure script is removed

* slight restructure

- make version all caps
- restructure variables that users may want to edit to top
- use CPPFLAGS for defines
- add some comments
- remove needless echos since we have verbose output now

* add echos back

Co-authored-by: NRK <nrk@disroot.org>
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-09-16 22:55:31 +03:00
Bert Münnich 1d28627868 Stable version 26 2020-01-16 14:30:49 +01:00
Bert Münnich 1ef5429702 Search freetype headers under PREFIX too
Related to PR #346.
2019-02-16 12:48:27 +01:00
Bert Münnich f88afbb277 Stable version 25 2019-01-26 14:54:40 +01:00
Bert Münnich 971f5d6694 Revise Makefile
Use uppercase for externally defined macros and lowercase for macros defined in
the makefile.

Also simplify generation of version.h.
2018-10-11 13:41:45 +02:00
Bert Münnich 8bf1adcd9a New version scheme
VERSION string between releases is last release suffixed with '+'.
Additionally, use output of git-describe instead of VERSION string, if it is
not empty.
2018-06-09 11:33:30 +02:00
Bert Münnich b78aaee9d7 Initialize window bar buffers to empty string
Fixes issue #308.
2018-04-11 09:55:28 +02:00
phi d5c5708110 Use argument to select between two drag methods 2018-01-22 09:46:38 +01:00
Bert Münnich 8017b75de4 Refactoring 2018-01-09 19:37:56 +01:00
Bert Münnich 004fcd5c5b Left bar shows file name as given by user 2017-12-07 14:08:37 +01:00
Squibby eb96c71725 Try to match a fallback font if needed
Fixes #276

Instead of rendering the entire filename at once, Xft will let us do it
character by character. This will allow sxiv to query fontconfig for
a font that can provide any missing codepoints, if needed.

A known issue of this patch is that the "..." dots rendering will not
work properly for very long multibyte filenames. That is because we
cannot easily predict the final width of the rendered filename before
drawing it. I couldn't figure out a clean way to deal with this, so I
ended up just truncating the offending filenames.
2017-12-06 20:39:07 -03:00
Bert Münnich f02661879f Reject text files resembling TGA images
Fixes issue #295

The imlib2 TGA loader returns an imlib image handle without any actual data
when given a text file like this:

    T
    Content-Type: application/javascript
    Content-Length: 3836
    Last-Modified: Wed, 23 Sep 2015 12:25:47 GMT
    Etag: "56029a4b-efc"
    Expires: Sat, 20 Aug 2016 15:14:33 GMT
    Cache-Control: max-age=604800, public
    Accept-Ranges: bytes

Fortunately, `imlib_image_get_data()` returns NULL in this case, so that we can
use it as an additional check when opening files.
2017-11-23 14:35:34 +01:00
Bert Münnich 9dabc5f988 Stable version 24 2017-10-27 17:25:56 +02:00
Bert Münnich 64b885b6a9 Fix navigating from last to previous image over invalid files 2017-10-26 22:20:39 +02:00
Bert Münnich 2d34c4b9bf Set LC_COLLATE for -r file list sorting
Fixes issue #293.
2017-10-24 21:43:36 +02:00
Bert Münnich 96445c3268 List objs in Makefile not srcs 2017-10-23 10:28:28 +02:00
Bert Münnich 79bcc2ba4a Make clean removes all object files 2017-10-23 10:27:14 +02:00
Bert Münnich df714376c5 Always take {C,CPP,LD}FLAGS from environment
Our own default values go into accompanying macros prefixed with DEF_.
2017-10-22 12:26:20 +02:00
Bert Münnich 4d2fc0b889 Back to VPATH for out-of-source builds
OpenBSD make supports VPATH but not pattern rules. Everything in the new
Makefile should work no matter what make program is used.
2017-10-19 13:29:25 +02:00
Bert Münnich d2b3a18d60 Addendum to 1ace4fb0 2017-10-19 13:02:08 +02:00
Bert Münnich 1ace4fb09c No more automatic dependency tracking
The new Makefile should work with the make programs shipped with FreeBSD,
NetBSD and OpenBSD.
2017-10-16 21:19:22 +02:00
Bert Münnich 24cf812bb2 No more config.mk 2017-10-16 21:16:05 +02:00
Bert Münnich 2cf9cfc700 Small refinements in Makefile 2017-10-16 21:15:38 +02:00
Bert Münnich 4af189e7d9 Fix dep file include in Makefile 2017-10-16 15:07:03 +02:00
Bert Münnich a5403178e3 Zoom into mouse cursor position 2017-10-16 10:56:53 +02:00
Bert Münnich 5155d52ab1 Much more portable Makefile
The config.mk file is now optional and only needs to be created if one wants to
persistently overwrite default macro values.

Features used in the Makefile that are not yet in the POSIX standard:

  - Advanced macro assignment operators '+=' and '?=' [1]
  - Special target .PHONY [2]
  - Pattern rules [3]; only needed when $srcdir != '.'. For every pattern rule
    there is an inference rule with the same effect. Hopefully, the inference
    rules get picked up by make programs not supporting pattern rules.
  - Silently including multiple possibly not exisiting files [4] [5]

[1] http://austingroupbugs.net/view.php?id=330
[2] http://austingroupbugs.net/view.php?id=523
[3] http://austingroupbugs.net/view.php?id=513
[4] http://austingroupbugs.net/view.php?id=333
[5] http://austingroupbugs.net/view.php?id=518
2017-10-12 11:00:24 +02:00
Bert Münnich 6beb8b4d71 Always include non-configurable part of CPPFLAGS 2017-10-08 22:03:05 +02:00
Bert Münnich e3b68efadd Move DEPFLAGS from Makefile to config.mk 2017-10-08 22:02:29 +02:00
Bert Münnich 33b5dbfa82 Mention GNU make requirement in Makefile 2017-10-08 20:24:15 +02:00
Bert Münnich 171633de32 Get rid of SRCDIR macro, VPATH on make cmd line suffices 2017-10-08 20:23:16 +02:00
Bert Münnich 8081cbebf3 Improve mouse support
None of the mouse mappings uses a keyboard modifier, making it possible to
access the most basic features by only using the mouse.

Next/previous image with left button depending on cursor position, middle
button for dragging, right button for switching to thumnail mode and wheel for
zooming.

Users can keep the old behaviour by simply not adapting the changes to the
buttons array in config.def.h to their config.h file.
2017-10-06 10:15:43 +02:00
Bert Münnich b8fd923e74 Simplify cursor handling 2017-10-05 12:30:31 +02:00
Bert Münnich e310136e02 Mouse drag translates pointer position to image area
This makes mouse panning more direct and faster.
2017-10-04 18:22:43 +02:00
Bert Münnich 9b6acc781e Fix linker command line 2017-09-11 17:09:26 +02:00
Bert Münnich 5b5dc74195 Only use targets in build messages 2017-09-11 17:08:38 +02:00
Bert Münnich 20009c240b Move special targets to bottom of Makefile 2017-09-08 21:15:59 +02:00
Bert Münnich a1b2fd2774 Non-verbose build
Verbose when build with `V=1'.
2017-09-08 16:51:47 +02:00
Bert Münnich a46006f527 Support out-of-source builds
Fixes issue #167. Long after closing this issue (kind of wontfix) we have switched to
GNU make and can thus use its features like VPATH.
2017-09-08 16:20:05 +02:00
Bert Münnich e46b1fa609 Simplify config.mk 2017-09-08 16:03:05 +02:00
Bert Münnich ad9955a9cf Move configuration parts from Makefile into config.mk 2017-09-06 20:12:09 +02:00
Bert Münnich 8aaa5c9398 Simplify autoreload backend selection in Makefile 2017-05-17 20:11:44 +02:00
Max Voit edb117e3bd Add autoreload support by inotify (and dummy backend nop) 2017-05-17 15:52:40 +02:00
Bert Münnich e98266b148 State the purpose of CLEANUP macro 2017-05-17 15:51:11 +02:00
Bert Münnich ba4b84a8b1 Fix missing quote in key-handler from commit 5c607ad 2017-02-13 11:20:58 +01:00
Bert Münnich 5c607ad495 Pass given file names to key-handler instead of real paths
Misbehaving command lines in the key-handler that rewrite the given files and
thus replace symbolic links instead of their targets shall call realpath(1).

Fixes issue #205 and reverts commit 92e3b578.
2017-01-07 14:44:33 +01:00
Bert Münnich 1c260e701b Fix unused-variable warnings in conditionally compiled code 2016-12-28 19:18:16 +01:00
Bert Münnich 5fb5d44cff Merge vaygr/opt-dep 2016-12-28 19:18:16 +01:00
Vlad Glagolev 22436f747d Add build options for optional dependencies 2016-12-26 19:20:59 -05:00
Bert Münnich ff2ce99bf7 Merge djhejna/floatdelay 2016-12-01 21:18:41 +01:00
Bert Münnich 9a85dd41d8 Ignore button and key events while key-handler is running
Related to issue #253, which originally asked for a non-blocking key-handler.
2016-11-30 20:48:32 +01:00