Use standard DESTDIR/PREFIX and some Makefile cleanup
diff --git a/Makefile b/Makefile
index 1ea21bb..1378b0f 100644
--- a/Makefile
+++ b/Makefile
@@ -4,12 +4,21 @@
# NOTE: at the moment this Makefile is for *nix only.
CC = $(CROSS)gcc
-AR?=ar
-RANLIB?=ranlib
+AR ?= ar
+RANLIB ?= ranlib
+STRIP ?= strip
CFLAGS += -fPIC -O3 -Wall -Iinclude
LDFLAGS += -shared
+PREFIX ?= /usr
+DESTDIR ?=
+INCDIR = $(DESTDIR)$(PREFIX)/include
+LIBDIR = $(DESTDIR)$(PREFIX)/lib
+
+INSTALL_DATA ?= install -m0644
+INSTALL_LIBRARY ?= install -m0755
+
LIBNAME = capstone
LIBOBJ =
LIBOBJ += cs.o asprintf.o utils.o SStream.o MCInstrDesc.o MCRegisterInfo.o
@@ -19,22 +28,21 @@
LIBOBJ += arch/AArch64/AArch64BaseInfo.o arch/AArch64/AArch64Disassembler.o arch/AArch64/AArch64InstPrinter.o arch/AArch64/mapping.o
LIBOBJ += MCInst.o
-
-# by default, lib extension is .so
-EXT = so
-
# OSX is the exception
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
EXT = dylib
+else
+# by default, lib extension is .so
+EXT = so
endif
-.PHONY: all clean lib windows win_lib install uninstall
+.PHONY: all clean lib archive windows win_lib install uninstall
-all: lib
- make -C tests
- install -m0644 lib$(LIBNAME).$(EXT) tests
+all: lib archive
+ $(MAKE) -C tests
+ $(INSTALL_DATA) lib$(LIBNAME).$(EXT) tests
lib: $(LIBOBJ)
$(CC) $(LDFLAGS) $(LIBOBJ) -o lib$(LIBNAME).$(EXT)
@@ -46,38 +54,39 @@
$(RANLIB) lib$(LIBNAME).a
install: archive lib
- install -m0644 lib$(LIBNAME).$(EXT) /usr/lib
- install -m0644 lib$(LIBNAME).a /usr/lib
- mkdir -p /usr/include/$(LIBNAME)
- install -m0644 include/capstone.h /usr/include/$(LIBNAME)
- install -m0644 include/x86.h /usr/include/$(LIBNAME)
- install -m0644 include/arm.h /usr/include/$(LIBNAME)
- install -m0644 include/arm64.h /usr/include/$(LIBNAME)
- install -m0644 include/mips.h /usr/include/$(LIBNAME)
+ mkdir -p $(LIBDIR)
+ $(INSTALL_LIBRARY) lib$(LIBNAME).$(EXT) $(LIBDIR)
+ $(INSTALL_DATA) lib$(LIBNAME).a $(LIBDIR)
+ mkdir -p $(INCDIR)/$(LIBNAME)
+ $(INSTALL_DATA) include/capstone.h $(INCDIR)/$(LIBNAME)
+ $(INSTALL_DATA) include/x86.h $(INCDIR)/$(LIBNAME)
+ $(INSTALL_DATA) include/arm.h $(INCDIR)/$(LIBNAME)
+ $(INSTALL_DATA) include/arm64.h $(INCDIR)/$(LIBNAME)
+ $(INSTALL_DATA) include/mips.h $(INCDIR)/$(LIBNAME)
uninstall:
- rm -rf /usr/include/$(LIBNAME)
- rm -rf /usr/lib/lib$(LIBNAME).$(EXT)
+ rm -rf $(INCDIR)/$(LIBNAME)
+ rm -f $(LIBDIR)/lib$(LIBNAME).$(EXT)
+ rm -f $(LIBDIR)/lib$(LIBNAME).a
# Mingw32
windows: win_lib
- install -m0644 $(LIBNAME).dll tests
- make -C tests windows
+ $(INSTALL_DATA) $(LIBNAME).dll tests
+ $(MAKE) -C tests windows
# Mingw32
win_lib: $(LIBOBJ)
$(CC) $(LDFLAGS) $(LIBOBJ) -o $(LIBNAME).dll
- strip $(LIBNAME).dll
+ $(STRIP) $(LIBNAME).dll
clean:
rm -f $(LIBOBJ) lib$(LIBNAME).* $(LIBNAME).dll
- #cd bindings/ruby; make clean; rm -rf Makefile
- cd bindings/python; make clean
- cd bindings/csharp; make clean
- cd bindings/java; make clean
- cd bindings/ocaml; make clean
- make -C tests clean
+ #cd bindings/ruby; $(MAKE) clean; rm -rf Makefile
+ $(MAKE) -C bindings/python clean
+ $(MAKE) -C bindings/csharp clean
+ $(MAKE) -C bindings/java clean
+ $(MAKE) -C bindings/ocaml clean
+ $(MAKE) -C tests clean
.c.o:
${CC} ${CFLAGS} -c $< -o $@
-