diff --git a/src/Makefile b/src/Makefile index f3b32238..78eb6d25 100644 --- a/src/Makefile +++ b/src/Makefile @@ -28,6 +28,10 @@ os := $(shell uname) ifeq ($(os),Darwin) LIBS += -lncurses -lboost_regex-mt +else ifeq ($(os),FreeBSD) + LIBS += -ltinfow -lncursesw -lboost_regex + CPPFLAGS += -I/usr/local/include + LDFLAGS += -L/usr/local/lib else ifeq ($(os),Haiku) LIBS += -lncursesw -lboost_regex -lnetwork -lbe else ifneq (,$(findstring CYGWIN,$(os))) diff --git a/src/file.cc b/src/file.cc index ced88614..0e6b1e61 100644 --- a/src/file.cc +++ b/src/file.cc @@ -12,6 +12,10 @@ #include #include +#if defined(__FreeBSD__) +#include +#endif + #if defined(__APPLE__) #include #define st_mtim st_mtimespec @@ -491,6 +495,11 @@ String get_kak_binary_path() kak_assert(res != -1); buffer[res] = '\0'; return buffer; +#elif defined(__FreeBSD__) + int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1}; + size_t res = sizeof(buffer); + sysctl(mib, 4, buffer, &res, NULL, 0); + return buffer; #elif defined(__APPLE__) uint32_t bufsize = 2048; _NSGetExecutablePath(buffer, &bufsize);