#iam wrote this monstrosity THISDIR= $(shell pwd) ZLIB=zlib-1.2.11 ZLIB_TARBALL=${ZLIB}.tar.gz ZLIB_URL=https://zlib.net/${ZLIB_TARBALL} ZLIB_INSTALL=${THISDIR}/install/zlib LIBEVENT=libevent-2.1.8-stable LIBEVENT_TARBALL=${LIBEVENT}.tar.gz LIBEVENT_URL=https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/${LIBEVENT_TARBALL} LIBEVENT_INSTALL=${THISDIR}/install/libevent OPENSSL=openssl-1.1.0h OPENSSL_TARBALL=${OPENSSL}.tar.gz OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_TARBALL} OPENSSL_INSTALL=${THISDIR}/install/openssl TOR=tor-0.3.3.6 TOR_TARBALL=${TOR}.tar.gz TOR_URL=https://www.torproject.org/dist/${TOR_TARBALL} TOR_INSTALL=${THISDIR}/install/tor #LLVMCC=wllvm #LLVMGET=extract-bc LLVMCC=gclang LLVMGET=get-bc BITCODE = libz.a.bc libssl.a.bc libevent.a.bc tor.bc all: tor.bc #${BITCODE} ${TOR_TARBALL}: wget ${TOR_URL} ${TOR}: ${TOR_TARBALL} tar xvfz ${TOR_TARBALL} ${TOR_INSTALL}/bin/tor: ${TOR} cd ${TOR}; CC=${LLVMCC} ./configure; make && make install #on linux we should try this: # cd ${TOR}; CC=${LLVMCC} ./configure --disable-dependency-tracking --enable-static-tor --with-openssl-dir=${OPENSSL_INSTALL} --with-libevent-dir=${LIBEVENT_INSTALL}/lib --with-zlib-dir=${ZLIB_INSTALL} --prefix=${TOR_INSTALL}; make && make install tor.bc: ${TOR_INSTALL}/bin/tor cd ${TOR_INSTALL}/bin; ${LLVMGET} tor; mv tor.bc ${THISDIR} ${ZLIB_TARBALL}: wget ${ZLIB_URL} ${ZLIB}: ${ZLIB_TARBALL} tar xvfz ${ZLIB_TARBALL} ${ZLIB_INSTALL}/lib/libz.a: ${ZLIB} cd ${ZLIB}; CC=${LLVMCC} ./configure --prefix=${ZLIB_INSTALL}; make && make install libz.a.bc: ${ZLIB_INSTALL}/lib/libz.a cd ${ZLIB_INSTALL}/lib; ${LLVMGET} -b libz.a; mv libz.a.bc ${THISDIR} ${OPENSSL_TARBALL}: wget ${OPENSSL_URL} ${OPENSSL}: ${OPENSSL_TARBALL} tar xvfz ${OPENSSL_TARBALL} ${OPENSSL_INSTALL}/lib/libssl.a: ${OPENSSL} cd ${OPENSSL}; CC=${LLVMCC} ./config --prefix=${OPENSSL_INSTALL} --openssldir=${OPENSSL_INSTALL}; make && make install libssl.a.bc: ${OPENSSL_INSTALL}/lib/libssl.a cd ${OPENSSL_INSTALL}/lib; ${LLVMGET} -b libssl.a; mv libssl.a.bc ${THISDIR} ${LIBEVENT_TARBALL}: wget ${LIBEVENT_URL} ${LIBEVENT}: ${LIBEVENT_TARBALL} tar xvfz ${LIBEVENT_TARBALL} ${LIBEVENT_INSTALL}/lib/libevent.a: ${LIBEVENT} cd ${LIBEVENT}; CC=${LLVMCC} CFLAGS="-I${OPENSSL_INSTALL}/include" LDFLAGS="-L${OPENSSL_INSTALL}/lib" ./configure --prefix=${LIBEVENT_INSTALL}; make && make install libevent.a.bc: ${LIBEVENT_INSTALL}/lib/libevent.a cd ${LIBEVENT_INSTALL}/lib; ${LLVMGET} -b libevent.a; mv libevent.a.bc ${THISDIR} clean: rm ${BITCODE} make -C ${ZLIB} clean make -C ${LIBEVENT} clean make -C ${OPENSSL} clean make -C ${TOR} clean very_clean: clean rm -rf install ${TOR} ${ZLIB} ${OPENSSL} ${LIBEVENT} spotless: very_clean rm -rf ${TOR_TARBALL} ${ZLIB_TARBALL} ${OPENSSL_TARBALL} ${LIBEVENT_TARBALL}