Makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. CUR_DIR = $(shell pwd)
  2. SRC_FILES = yuarel.c
  3. OBJ_FILES = $(patsubst %.c, %.o, $(SRC_FILES))
  4. VERSION_MAJOR = 1
  5. VERSION_MINOR = 0
  6. VERSION = $(VERSION_MAJOR).$(VERSION_MINOR)
  7. LIBNAME = yuarel
  8. PKG_NAME = lib$(LIBNAME)-$(VERSION)
  9. CC = gcc
  10. AR = ar
  11. CFLAGS = -c -fPIC -g -Wall
  12. LDFLAGS =-s -shared -fvisibility=hidden -Wl,--exclude-libs=ALL,--no-as-needed,-soname,lib$(LIBNAME).so.$(VERSION_MAJOR)
  13. PREFIX ?= /usr
  14. .PHONY: all
  15. all: yuarel
  16. .PHONY: yuarel
  17. yuarel: $(SRC_FILES) $(OBJ_FILES)
  18. @echo "Building $(PKG_NAME)..."
  19. $(CC) $(LDFLAGS) $(OBJ_FILES) -o lib$(LIBNAME).so.$(VERSION_MAJOR)
  20. $(AR) rcs lib$(LIBNAME).a $(OBJ_FILES)
  21. %.o: %.c
  22. $(CC) $(CFLAGS) $< -o $@
  23. .PHONY: install
  24. install: all
  25. install --directory $(PREFIX)/lib $(PREFIX)/include
  26. install lib$(LIBNAME).so.$(VERSION_MAJOR) lib$(LIBNAME).a $(PREFIX)/lib/
  27. ln -fs $(PREFIX)/lib/lib$(LIBNAME).so.$(VERSION_MAJOR) $(PREFIX)/lib/lib$(LIBNAME).so
  28. install yuarel.h $(PREFIX)/include/
  29. ldconfig -n $(PREFIX)/lib
  30. .PHONY: examples
  31. examples: examples/simple.c
  32. $(CC) examples/simple.c -l$(LIBNAME) -o simple
  33. .PHONY: check
  34. check:
  35. @mkdir -p build
  36. PREFIX=$(CUR_DIR)/build make install
  37. $(CC) tests/test_lib.c -Ibuild/include -Lbuild/lib -l$(LIBNAME) -o test_lib
  38. LD_LIBRARY_PATH="build/lib" \
  39. ./test_lib
  40. .PHONY: dist
  41. dist:
  42. install -d $(PKG_NAME)
  43. install *.c $(PKG_NAME)/
  44. install *.h $(PKG_NAME)/
  45. install Makefile LICENSE README.md $(PKG_NAME)/
  46. cp -r tests $(PKG_NAME)/
  47. cp -r examples $(PKG_NAME)/
  48. tar -pczf $(PKG_NAME).tar.gz $(PKG_NAME)
  49. .PHONY: clean
  50. clean:
  51. rm -f *.o
  52. rm -fr build
  53. rm -f simple test_lib
  54. .PHONY: dist-clean
  55. dist-clean: clean
  56. rm -f libyuarel.so.*
  57. rm -rf $(PKG_NAME)
  58. rm -f $(PKG_NAME).tar.gz