aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Johnson <nick@nicksphere.ch>2022-04-08 00:00:00 +0000
committerNicholas Johnson <nick@nicksphere.ch>2022-04-08 00:00:00 +0000
commit088cb4047eca3701f9837f244e11ff2ede2b56954e787d7700aa68cb7b757da2 (patch)
tree953ac1ca95616f7234d17510011c297409df4b4c431b4c2cfd7132affed41425
parent21b14d73b89793c02288aab0e5427e51fbbc0f68d5cb8497e39e76c25c84b8e0 (diff)
Change Makefile to install shared library
-rw-r--r--.gitignore2
-rw-r--r--Makefile61
2 files changed, 33 insertions, 30 deletions
diff --git a/.gitignore b/.gitignore
index 1a39094..ae83e57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
gemini2html.o
+libgemini2html.so
gemini2html
-test \ No newline at end of file
diff --git a/Makefile b/Makefile
index f517db4..ad8356e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,46 +1,49 @@
CC = gcc
CFLAGS = -W
-RM = rm -f
+RM = rm -rf
SRCDIR = src
-PREFIXUSER?=$(HOME)/.local
-PREFIXSYS?=/usr/local
-BINDIRUSER?=$(PREFIXUSER)/bin
-MANDIRUSER?=$(PREFIXUSER)/share/man
-BINDIRSYS?=$(PREFIXSYS)/bin
-MANDIRSYS?=$(PREFIXSYS)/share/man
+USERBIN?=$(HOME)/.local/bin
+USERMAN?=$(HOME)/.local/share/man
+
+SYSBIN?=/usr/local/bin
+SYSMAN?=/usr/local/share/man
+
+ifneq ($(wildcard /usr/lib/x86_64-linux-gnu/.),)
+ SYSLIB?=/usr/lib/x86_64-linux-gnu
+else
+ SYSLIB?=/usr/lib
+endif
default: all
-all: gemini2html main
+all: libgemini2html.so gemini2html
-gemini2html: $(SRCDIR)/gemini2html.c
- $(CC) -c $(CFLAGS) -o gemini2html.o $(SRCDIR)/gemini2html.c
+libgemini2html.so: $(SRCDIR)/gemini2html.c
+ $(CC) $(CFLAGS) -shared -fPIC $(SRCDIR)/gemini2html.c -o libgemini2html.so
-main: $(SRCDIR)/gemini2html.c $(SRCDIR)/main.c
+gemini2html: $(SRCDIR)/gemini2html.c $(SRCDIR)/main.c
$(CC) $(CFLAGS) -o gemini2html $(SRCDIR)/gemini2html.c $(SRCDIR)/main.c
-install_user: all
- mkdir -m755 -p $(MANDIRUSER)/man1
- install -m755 gemini2html $(BINDIRUSER)/gemini2html
- install -m755 gemini2html.1 $(MANDIRUSER)/man1/gemini2html.1
+install: gemini2html gemini2html.1 libgemini2html.so
+ mkdir -m755 -p $(SYSMAN)/man1
+ install -m755 gemini2html $(SYSBIN)/gemini2html
+ install -m755 gemini2html.1 $(SYSMAN)/man1/gemini2html.1
+ install -m755 libgemini2html.so $(SYSLIB)/libgemini2html.so
+ ldconfig -n $(SYSLIB)
-install_sys: all
- mkdir -m755 -p $(MANDIRSYS)/man1
- install -m755 gemini2html $(BINDIRSYS)/gemini2html
- install -m755 gemini2html.1 $(MANDIRSYS)/man1/gemini2html.1
+install_user: gemini2html gemini2html.1
+ mkdir -m755 -p $(USERMAN)/man1
+ install -m755 gemini2html $(USERBIN)/gemini2html
+ install -m755 gemini2html.1 $(USERMAN)/man1/gemini2html.1
-uninstall_user:
- $(RM) $(BINDIRUSER)/gemini2html
- $(RM) $(MANDIRUSER)/gemini2html.1
+uninstall:
+ $(RM) $(SYSBIN)/gemini2html $(SYSMAN)/gemini2html.1 $(SYSLIB)/libgemini2html.so
-uninstall_sys:
- $(RM) $(BINDIRSYS)/gemini2html
- $(RM) $(MANDIRSYS)/gemini2html.1
-
-uninstall: uninstall_user uninstall_sys
+uninstall_user:
+ $(RM) $(USERBIN)/gemini2html $(USERMAN)/gemini2html.1
clean:
- $(RM) gemini2html.o gemini2html
+ $(RM) libgemini2html.so gemini2html
-.PHONY: default all install_user install_sys uninstall_user uninstall_sys uninstall clean
+.PHONY: default all install install_user uninstall clean