aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorPaul Selkirk <paul@psgd.org>2016-07-21 14:52:46 -0400
committerPaul Selkirk <paul@psgd.org>2016-07-21 14:52:46 -0400
commit524581393c335bcbcb8f4fb9c2deafe8b1018351 (patch)
treea4f6ddd52aefbf5ee4b52d8b55b2904cb6b41297 /Makefile
Import of libcli from https://github.com/dparrish/libcli.git
Upstream commit 958e44e7a69d3c71e89908fa8ee15232c55a821a
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile84
1 files changed, 84 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3062635
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,84 @@
+# Build dynamic library by default
+DYNAMIC_LIB ?= 1
+# Build static library by default
+STATIC_LIB ?= 1
+# Run tests by default
+TESTS ?= 1
+
+UNAME = $(shell sh -c 'uname -s 2>/dev/null || echo not')
+DESTDIR =
+PREFIX = /usr/local
+
+MAJOR = 1
+MINOR = 9
+REVISION = 7
+LIB = libcli.so
+LIB_STATIC = libcli.a
+
+CC = gcc
+AR = ar
+ARFLAGS = rcs
+DEBUG = -g
+OPTIM = -O3
+override CFLAGS += $(DEBUG) $(OPTIM) -Wall -std=c99 -pedantic -Wformat-security -Wno-format-zero-length -Werror -Wwrite-strings -Wformat -fdiagnostics-show-option -Wextra -Wsign-compare -Wcast-align -Wno-unused-parameter
+override LDFLAGS += -shared
+override LIBPATH += -L.
+
+ifeq ($(UNAME),Darwin)
+override LDFLAGS += -Wl,-install_name,$(LIB).$(MAJOR).$(MINOR)
+else
+override LDFLAGS += -Wl,-soname,$(LIB).$(MAJOR).$(MINOR)
+LIBS = -lcrypt
+endif
+
+ifeq (1,$(DYNAMIC_LIB))
+TARGET_LIBS += $(LIB)
+endif
+ifeq (1,$(STATIC_LIB))
+TARGET_LIBS += $(LIB_STATIC)
+endif
+
+all: $(TARGET_LIBS) $(if $(filter 1,$(TESTS)),clitest)
+
+$(LIB): libcli.o
+ $(CC) -o $(LIB).$(MAJOR).$(MINOR).$(REVISION) $^ $(LDFLAGS) $(LIBS)
+ -rm -f $(LIB) $(LIB).$(MAJOR).$(MINOR)
+ ln -s $(LIB).$(MAJOR).$(MINOR).$(REVISION) $(LIB).$(MAJOR).$(MINOR)
+ ln -s $(LIB).$(MAJOR).$(MINOR) $(LIB)
+
+$(LIB_STATIC): libcli.o
+ $(AR) $(ARFLAGS) $@ $^
+
+%.o: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -o $@ -c $<
+
+libcli.o: libcli.h
+
+clitest: clitest.o $(LIB)
+ $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -L. -lcli
+
+clitest.exe: clitest.c libcli.o
+ $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< libcli.o -lws2_32
+
+clean:
+ rm -f *.o $(LIB)* $(LIB_STATIC) clitest
+
+install: $(TARGET_LIBS)
+ install -d $(DESTDIR)$(PREFIX)/include $(DESTDIR)$(PREFIX)/lib
+ install -m 0644 libcli.h $(DESTDIR)$(PREFIX)/include
+ ifeq (1,$(STATIC_LIB))
+ install -m 0644 $(LIB_STATIC) $(DESTDIR)$(PREFIX)/lib
+ endif
+ ifeq (1,$(DYNAMIC_LIB))
+ install -m 0755 $(LIB).$(MAJOR).$(MINOR).$(REVISION) $(DESTDIR)$(PREFIX)/lib
+ cd $(DESTDIR)$(PREFIX)/lib && \
+ ln -fs $(LIB).$(MAJOR).$(MINOR).$(REVISION) $(LIB).$(MAJOR).$(MINOR) && \
+ ln -fs $(LIB).$(MAJOR).$(MINOR) $(LIB)
+ endif
+
+rpm:
+ mkdir libcli-$(MAJOR).$(MINOR).$(REVISION)
+ cp -R *.c *.h Makefile Doc README *.spec libcli-$(MAJOR).$(MINOR).$(REVISION)
+ tar zcvf libcli-$(MAJOR).$(MINOR).$(REVISION).tar.gz --exclude CVS --exclude *.tar.gz libcli-$(MAJOR).$(MINOR).$(REVISION)
+ rm -rf libcli-$(MAJOR).$(MINOR).$(REVISION)
+ rpm -ta libcli-$(MAJOR).$(MINOR).$(REVISION).tar.gz --clean