sxiv icon indicating copy to clipboard operation
sxiv copied to clipboard

Trying to build on FreeBSD

Open plasmoduck opened this issue 4 years ago • 10 comments

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 <Imlib2.h> ^~~~~~~~~~ 1 error generated. *** Error code 1

Stop.

plasmoduck avatar Jan 31 '21 04:01 plasmoduck

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.

iamleot avatar Jan 31 '21 11:01 iamleot

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 avatar Feb 04 '21 07:02 plasmoduck

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

plasmoduck avatar Feb 04 '21 07:02 plasmoduck

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

Please retry!

iamleot avatar Feb 04 '21 09:02 iamleot

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

plasmoduck avatar Feb 04 '21 14:02 plasmoduck

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

iamleot avatar Feb 04 '21 14:02 iamleot

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

plasmoduck avatar Feb 04 '21 14:02 plasmoduck

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).

iamleot avatar Feb 04 '21 14:02 iamleot

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

plasmoduck avatar Feb 04 '21 14:02 plasmoduck

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

plasmoduck avatar Feb 04 '21 14:02 plasmoduck