xyb3rt / sxiv

Simple X Image Viewer
GNU General Public License v2.0
1.81k stars 260 forks source link

Trying to build on FreeBSD #436

Open plasmoduck opened 3 years ago

plasmoduck commented 3 years ago

I have imlib2 installed (/usr/local/include/Imlib2.h)

CC autoreload_inotify.o In file included from autoreload_inotify.c:19: ./sxiv.h:27:10: fatal error: 'Imlib2.h' file not found

include

     ^~~~~~~~~~

1 error generated. *** Error code 1

Stop.

iamleot commented 3 years ago

It is probably needed to pass CPPFLAGS and LDFLAGS in the make invocation so the include files and libraries can be picked up, e.g.:

$ make CPPFLAGS=-I/usr/local/include LDFLAGS="-L/usr/local/lib -Wl,-R/usr/local/lib"

...will probably DTRT.

plasmoduck commented 3 years ago

LINK sxiv ld: error: unable to find library -lImlib2 ld: error: unable to find library -lX11 ld: error: unable to find library -lXft ld: error: unable to find library -lfontconfig ld: error: unable to find library -lexif ld: error: unable to find library -lgif cc: error: linker command failed with exit code 1 (use -v to see invocation) *** Error code 1

plasmoduck commented 3 years ago

Maybe you can make a patch config.mk or something that supports FreeBSD as well

iamleot commented 3 years ago

Sorry, there was a copypasto: I missed /lib in LDFLAGS.

Please retry!

plasmoduck commented 3 years ago

make CPPFLAGS=-I/usr/local/include LDFLAGS="-L/usr/local/lib -Wl,-R/usr/local/lib" LINK sxiv ld: error: undefined symbol: inotify_init1

referenced by autoreload_inotify.c autoreload_inotify.o:(arl_init)

ld: error: undefined symbol: inotify_rm_watch

referenced by autoreload_inotify.c autoreload_inotify.o:(arl_setup) referenced by autoreload_inotify.c autoreload_inotify.o:(arl_setup) referenced by autoreload_inotify.c autoreload_inotify.o:(arl_handle)

ld: error: undefined symbol: inotify_add_watch

referenced by autoreload_inotify.c autoreload_inotify.o:(arl_setup) referenced by autoreload_inotify.c autoreload_inotify.o:(arl_setup) cc: error: linker command failed with exit code 1 (use -v to see invocation) *** Error code 1

Stop. make: stopped in /usr/home/cjg/suckless/sxiv

iamleot commented 3 years ago

Passing AUTORELOAD=nop as a Make flag similar to CPPFLAGS and LDFLAGS should disable inotify support and probably address this issue too.

plasmoduck commented 3 years ago

thanks, thats crazy all these flags I have to use. I still think a config.mk would be much easier.

iamleot commented 3 years ago

I would just use the package provided by your favourite package system (and/or look for possible adjustments there!). :)

Without using pkg-config - and for AUTORELOAD probably also checking it at configure time - I think that also having a config.mk thingie would need manual intervention (it would only move some variables currently present in Makefile to a separate file).

plasmoduck commented 3 years ago

I just find that structure easier to follow and modify like the other suckless programs.

plasmoduck commented 3 years ago

so what can I put in my Makefile edit so I can just type make?