# Compile OpenSSL 0.9.8b for Windows using Microsoft Visual C++ # Copyright (c) 2005 Ross Smith. All Rights Reserved. # $Id$ OPENSSL_VER ?=0.9.8g INSTALL_DIR ?=C:/Program Files/Openssl OPENSSL_DIR?=openssl-${OPENSSL_VER} OPENSSL_GZ?=${OPENSSL_DIR}.tar.gz OPENSSL_URL?=http://www.openssl.org/source/${OPENSSL_GZ} WGET?=wget -N ZIP?=zip ZIP_OPTS?= # 6.0, 7.0 or .NET MSVC_DIR_WIN?=C:/Program Files/Microsoft Visual Studio/VC98 # required for ml.exe, this may be provided if you have Visual Studio .NET # NASM may also work ASM_DIR_WIN?=D:/PROGRA~1/MICROS~1/VC # ActiveState perl, not cygwin perl PERL_DIR_WIN?=C:/perl define unix2dos $(shell cygpath -w "$(1)" | sed -e 's|/|\\|g') endef define dos2unix $(shell cygpath $(1) | sed -e 's/ /\\ /g') endef MSVC_DIR=$(call dos2unix,"$(MSVC_DIR_WIN)") ASM_DIR=$(call dos2unix,"$(ASM_DIR_WIN)") PERL_DIR=$(call dos2unix,"$(PERL_DIR_WIN)") CMD_EXE=$(call dos2unix,"$(COMSPEC)") OPENSSL_EXE=${OPENSSL_DIR}/out32dll/openssl.exe OPENSSLCONF_H=${OPENSSL_DIR}/crypto/opensslconf.h SSLEAY32_DEF=${OPENSSL_DIR}/ms/ssleay32.def OPENSSL_TOUCH=${OPENSSL_DIR}/${OPENSSL_DIR}.touch UPX_TOUCH=${OPENSSL_DIR}/upx.touch OPENSSL_ZIP=${OPENSSL_DIR}.zip .PHONY: all clean dist install pack test zip all: ${OPENSSL_EXE} ${OPENSSL_GZ}: $(WGET) $(OPENSSL_URL) ${OPENSSL_TOUCH}: ${OPENSSL_GZ} tar xzvf ${OPENSSL_GZ} touch $@ ${OPENSSLCONF_H}: ${OPENSSL_TOUCH} cd ${OPENSSL_DIR} && \ PATH=${MSVC_DIR}/bin:${ASM_DIR}/bin:${PERL_DIR}/bin:$$PATH \ ${PERL_DIR}/bin/perl Configure VC-WIN32 ${SSLEAY32_DEF}: ${OPENSSL_TOUCH} cd ${OPENSSL_DIR} && \ PATH=${MSVC_DIR}/bin:${ASM_DIR}/bin:${PERL_DIR}/bin:$$PATH \ ${CMD_EXE} /c ms\\do_masm.bat ${OPENSSL_EXE}: ${OPENSSLCONF_H} ${SSLEAY32_DEF} cd ${OPENSSL_DIR} && \ MAKEFLAGS="" \ PATH=${MSVC_DIR}/bin:${ASM_DIR}/bin:${PERL_DIR}/bin:$$PATH \ ${CMD_EXE} /c nmake /f ms\\ntdll.mak chmod +x $@ test: all cd ${OPENSSL_DIR}/out32dll && \ cmd /c ..\\ms\\test.bat install: mkdir -p "${INSTALL_DIR}" cp -p \ ${OPENSSL_DIR}/out32dll/*.exe \ ${OPENSSL_DIR}/out32dll/*.dll \ ${OPENSSL_DIR}/apps/openssl.cnf \ "${INSTALL_DIR}" ${UPX_TOUCH}: ${OPENSSL_EXE} -cd ${OPENSSL_DIR}/out32dll && \ upx *.exe *.dll chmod +x ${OPENSSL_DIR}/out32dll/*.exe touch $@ pack: ${UPX_TOUCH} ZIP_FILES=${OPENSSL_DIR}/out32dll/*.exe \ ${OPENSSL_DIR}/out32dll/*.dll \ ${OPENSSL_DIR}/apps/openssl.cnf \ ${OPENSSL_DIR}/INSTALL.W32 \ ${OPENSSL_DIR}/LICENSE CWD=$(shell pwd) ${OPENSSL_ZIP}: ${UPX_TOUCH} for file in ${ZIP_FILES} ;\ do \ dir=`dirname $$file` ;\ base=`basename $$file` ;\ (cd $$dir && ${ZIP} ${ZIP_OPTS} ${CWD}/${OPENSSL_ZIP} $$base );\ done zip: ${OPENSSL_ZIP} dist: zip clean: rm -fr \ ${OPENSSL_GZ} \ ${OPENSSL_TOUCH} \ ${OPENSSL_DIR}/tmp32dll