1CFLAGS=-W -Wall -Wextra -ansi -pedantic -std=c++11 2OBJ=obj 3LIB=lib 4ZLIB_VERSION=1.2.11 5ZLIB=$(LIB)/zlib-$(ZLIB_VERSION) 6LIBZIP_VERSION=1.8.0 7LIBZIP=$(LIB)/libzip-$(LIBZIP_VERSION) 8LIBZIP_CMAKE=-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF 9CRYPTO_FLAGS=-lssl -lcrypto 10 11# for optimal compilation speed, should be <nb_proc>+1 12NBPROC=5 13 14all: libzippp-static libzippp-shared 15 16libzippp-compile: 17 rm -rf $(OBJ) 18 mkdir $(OBJ) 19 $(CXX) -g -fPIC -c -I$(LIBZIP)/lib -I$(LIBZIP)/build -o $(OBJ)/libzippp.o $(CFLAGS) src/libzippp.cpp 20 21libzippp-static: libzippp-compile 22 ar rvs libzippp.a $(OBJ)/libzippp.o 23 24libzippp-shared: libzippp-compile 25 $(CXX) -shared -o libzippp.so $(OBJ)/libzippp.o 26 27libzippp-tests: libzippp-static libzippp-shared 28 if [ -d $(ZLIB) ]; then \ 29 $(CXX) -o test_static -g -I$(ZLIB) -I$(LIBZIP)/lib -I$(LIBZIP)/build -Isrc $(CFLAGS) tests/tests.cpp libzippp.a $(LIBZIP)/build/lib/libzip.a $(ZLIB)/libz.a -lbz2 -llzma $(CRYPTO_FLAGS); \ 30 $(CXX) -o test_shared -g -I$(ZLIB) -I$(LIBZIP)/lib -I$(LIBZIP)/build -Isrc $(CFLAGS) tests/tests.cpp -L. -L$(LIBZIP)/build/lib -L$(ZLIB) -lzippp -lzip -lz -lbz2 -llzma $(CRYPTO_FLAGS) -Wl,-rpath=.; \ 31 else \ 32 $(CXX) -o test_static -g -I$(LIBZIP)/lib -Isrc $(CFLAGS) tests/tests.cpp libzippp.a $(LIBZIP)/build/lib/libzip.a -lz -lbz2 -llzma $(CRYPTO_FLAGS); \ 33 $(CXX) -o test_shared -g -I$(LIBZIP)/lib -Isrc $(CFLAGS) tests/tests.cpp -L. -L$(LIBZIP)/build/lib -lzippp -lzip -lz -lbz2 -llzma $(CRYPTO_FLAGS) -Wl,-rpath=.; \ 34 fi; 35 36clean-tests: 37 @rm -rf *.zip 38 39tests: libzippp-tests clean-tests 40 LD_LIBRARY_PATH="$(LIBZIP)/build/lib" valgrind --suppressions=ld.supp --leak-check=full ./test_shared 41 valgrind --suppressions=ld.supp --leak-check=full ./test_static 42 43clean: 44 @rm -rf libzippp.a libzippp.so 45 @rm -rf $(OBJ) 46 @rm -rf test_shared test_static 47 @rm -f windows-ready_to_compile.zip 48 49mrproper: clean 50 @rm -rf $(LIBZIP) 51 @rm -rf $(LIB)/libzip-$(LIBZIP_VERSION) 52 @rm -rf $(LIB)/zlib-$(ZLIB_VERSION) 53 @rm -rf $(LIB)/*.tar.gz 54 55# ZLIB targets 56 57zlib-init: 58 mkdir -p $(LIB) 59 60zlib-download: zlib-init 61 wget -c -O "$(ZLIB).tar.gz" "https://github.com/madler/zlib/archive/v$(ZLIB_VERSION).tar.gz" 62 63zlib-unzip: zlib-download 64 cd $(LIB) && tar -xf zlib-$(ZLIB_VERSION).tar.gz 65 66zlib-configure: zlib-unzip 67 cd $(ZLIB) && ./configure 68 69zlib-compile: zlib-configure 70 cd $(ZLIB) && make -j$(NBPROC) 71 72zlib: zlib-compile 73 74# LIZIP targets 75 76libzip-init: 77 mkdir -p $(LIB) 78 79libzip-download: libzip-init 80 wget -c -O "$(LIBZIP).tar.gz" "https://www.nih.at/libzip/libzip-$(LIBZIP_VERSION).tar.gz" 81 82libzip-unzip: libzip-download 83 cd $(LIB) && tar -xf libzip-$(LIBZIP_VERSION).tar.gz 84 85libzip-patch: libzip-unzip 86 if [ -f $(LIB)/libzip-$(LIBZIP_VERSION)-windows.patch ]; then \ 87 cd $(LIB)/libzip-$(LIBZIP_VERSION) && patch -p1 < ../libzip-$(LIBZIP_VERSION)-windows.patch; \ 88 fi; 89 90libzip-build-folder: 91 mkdir -p $(LIBZIP)/build; 92 93libzip-build-shared: libzip-patch libzip-build-folder 94 if [ -d "$(ZLIB)" ]; then \ 95 cd $(LIBZIP)/build && cmake .. -DZLIB_LIBRARY_RELEASE=../../../$(ZLIB)/libz.so -DZLIB_INCLUDE_DIR=../../../$(ZLIB) -DBUILD_SHARED_LIBS=ON $(LIBZIP_CMAKE) && make -j$(NBPROC); \ 96 else \ 97 cd $(LIBZIP)/build && cmake .. -DBUILD_SHARED_LIBS=ON $(LIBZIP_CMAKE) && make -j$(NBPROC); \ 98 fi; 99 100libzip-build-static: libzip-patch libzip-build-folder 101 if [ -d "$(ZLIB)" ]; then \ 102 cd $(LIBZIP)/build && cmake .. -DZLIB_LIBRARY_RELEASE=../../../$(ZLIB)/libz.a -DZLIB_INCLUDE_DIR=../../../$(ZLIB) -DBUILD_SHARED_LIBS=OFF $(LIBZIP_CMAKE) && make -j$(NBPROC); \ 103 else \ 104 cd $(LIBZIP)/build && cmake .. -DBUILD_SHARED_LIBS=OFF $(LIBZIP_CMAKE) && make -j$(NBPROC); \ 105 fi; 106 107libzip: libzip-build-shared libzip-build-static 108 109# LIBRARIES TARGET 110 111libraries: zlib libzip 112 113libraries-download: zlib-download libzip-download 114 115# Windows compilation preparation 116 117windows: mrproper zlib-download zlib-unzip libzip-download libzip-unzip libzip-patch 118 zip -r windows-ready_to_compile.zip lib src tests cmake compile.bat CMakeLists.txt Config.cmake.in 119