#! /bin/sh
if [ $# -ne 1 ]; then
echo "Usage: zipwin <archive_name>" 1>&2
exit 1
fi
name=$(echo "$1" | sed -e 's/.*[\\\/]//; s/\.zip//')
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
if [ "$MINGDIR" = "" ]; then
echo "You need to set up Cygwin before running this script" 1>&2
exit 1
fi
else
if [ "$MSVCDIR" = "" ]; then
echo "You need to set up MSVC (run vcvars32.bat) before running this script" 1>&2
exit 1
fi
fi
if [ ! -f include/allegro5/allegro.h ]; then
echo "Oops, you don't appear to be in the root of the Allegro directory" 1>&2
exit 1
fi
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
./fix.sh mingw --dtou
else
./fix.sh msvc --utod
fi
echo "Cleaning the Allegro tree..."
make.exe -s veryclean
misc/fixdll.sh
echo "Generating dependencies..."
make.exe depend
make.exe lib
make.exe lib DEBUGMODE=1
make.exe lib PROFILEMODE=1
ver=`sed -n -e "s/LIBRARY_VERSION = \(.*\)/\1/p" makefile.ver`
echo "Compiling vcvars.exe..."
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
gcc -Wl,--subsystem,console -o vcvars.exe misc/vcvars.c -ladvapi32
else
cl -nologo misc/vcvars.c advapi32.lib
rm vcvars.obj
fi
echo "Compiling askq.exe..."
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
gcc -Wl,--subsystem,console -o askq.exe misc/askq.c
else
cl -nologo misc/askq.c
rm askq.obj
fi
echo "Generating msvcmake.bat..."
cat > msvcmake.bat << END_OF_BATCH
@echo off
rem Batch file for installing the precompiled Allegro DLL files,
rem and building the MSVC example and test programs.
rem Generated by misc/zipwin.sh
if not exist include\\allegro.h goto no_allegro
if not "%MSVCDIR%" == "" goto got_msvc
if "%VCVARS%" == "" goto no_vcvars
call "%VCVARS%"
goto got_msvc
:no_vcvars
echo MSVC environment variables not found: running vcvars.exe to look for them
vcvars.exe msvcmake.bat
goto the_end
:got_msvc
call fix.bat msvc --quick
echo Generating release mode import library
copy lib\\msvc\\allegro.def lib\\msvc\\alleg$ver.def > nul
lib /nologo /machine:ix86 /def:lib\\msvc\\alleg$ver.def /out:lib\\msvc\\alleg.lib
echo Generating debug mode import library
copy lib\\msvc\\allegro.def lib\\msvc\\alld$ver.def > nul
lib /nologo /machine:ix86 /def:lib\\msvc\\alld$ver.def /out:lib\\msvc\\alld.lib /debugtype:cv
echo Generating profile mode import library
copy lib\\msvc\\allegro.def lib\\msvc\\allp$ver.def > nul
lib /nologo /machine:ix86 /def:lib\\msvc\\allp$ver.def /out:lib\\msvc\\allp.lib
echo Compiling test and example programs
END_OF_BATCH
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
./fix.sh msvc --utod
export MSVCDIR="MSVCDIR"
make.exe depend UNIX_TOOLS=1
echo "Fooling the MSVC makefile ..."
cp lib/mingw32/*.dll lib/msvc/
make.exe -t lib
fi
cat > _fix1.sed << END_OF_SED
# remove any echo messages from the make output
/^echo/d
# strip out references to runner.exe
s/obj\/msvc\/runner.exe //
# turn program name slashes into DOS format
s/\\//\\\\/g
# make sure were are using command.com copy, rather than cp
s/^.*cat tools.*msvc.plugins.h/copy \/B tools\\\\plugins\\\\*.inc tools\\\\plugins\\\\plugins.h/
# add blank lines, to make the batch output more readable
s/^\([^@]*\)$/\\
\1/
# turn any @ argfile references into an echo+tmpfile sequence
s/\(.*\) @ \(.*\)/\\
echo \2 > _tmp.arg\\
\1 @_tmp.arg\\
del _tmp.arg/
END_OF_SED
cat > _fix2.sed << END_OF_SED
s/echo \(................................................[^ ]*\) \(........*\) \(>>*\) _tmp\.arg/echo \1 \3 _tmp.arg\\
echo \2 >> _tmp.arg/
END_OF_SED
echo "Running make -n, to generate the command list..."
make.exe -n | \
sed -f _fix1.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed | \
sed -f _fix2.sed \
>> msvcmake.bat
rm _fix1.sed _fix2.sed
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
unset MSVCDIR
fi
cat >> msvcmake.bat << END_OF_BATCH
askq.exe Would you like to copy the headers and libs to your MSVC directories
if errorlevel 1 goto no_lib_copy
if not "%MSVCDIR%" == "" set _VC_DIR_=%MSVCDIR%
echo Copying libraries
copy lib\\msvc\\*.lib "%_VC_DIR_%\\lib"
echo Copying allegro.h
copy include\\allegro.h "%_VC_DIR_%\\include"
echo Copying winalleg.h
copy include\\winalleg.h "%_VC_DIR_%\\include"
echo Copying module headers
md "%_VC_DIR_%\\include\\allegro"
copy include\\allegro\\*.h "%_VC_DIR_%\\include\\allegro"
echo Copying inline headers
md "%_VC_DIR_%\\include\\allegro\\inline"
copy include\\allegro\\inline\\*.inl "%_VC_DIR_%\\include\\allegro\\inline"
echo Copying internal headers
md "%_VC_DIR_%\\include\\allegro\\internal"
copy include\\allegro\\internal\\*.h "%_VC_DIR_%\\include\\allegro\\internal"
echo Copying platform headers
md "%_VC_DIR_%\\include\\allegro\\platform"
copy include\\allegro\\platform\\aintwin.h "%_VC_DIR_%\\include\\allegro\\platform"
copy include\\allegro\\platform\\almsvc.h "%_VC_DIR_%\\include\\allegro\\platform"
copy include\\allegro\\platform\\alplatf.h "%_VC_DIR_%\\include\\allegro\\platform"
copy include\\allegro\\platform\\alwin.h "%_VC_DIR_%\\include\\allegro\\platform"
set _VC_DIR_=
goto lib_copy_done
:no_lib_copy
echo Library and header files were not installed.
echo You can find the headers in the allegro\\include directory,
echo and the libs in allegro\\lib\\msvc\\
:lib_copy_done
askq.exe Would you like to copy the DLL files to your Windows system directory
if errorlevel 1 goto no_dll_copy
if "%OS%" == "Windows_NT" set _WIN_DIR_=%SYSTEMROOT%\\system32
if "%OS%" == "" set _WIN_DIR_=%windir%\\system
echo Copying DLL files to %_WIN_DIR_%
copy lib\\msvc\\*.dll %_WIN_DIR_%
set _WIN_DIR_=
goto dll_copy_done
:no_dll_copy
echo DLL files were not installed.
echo You can find them in allegro\\lib\\msvc\\
:dll_copy_done
echo.
echo All done: Allegro is now installed on your system!
goto the_end
:no_allegro
echo Can't find the Allegro library source files! To install this binary
echo distribution, you must also have a copy of the library sources, so
echo that I can compile the support programs and convert the documentation.
:the_end
END_OF_BATCH
cat > $name.txt << END_OF_README
______ ___ ___
/\\ _ \\ /\\_ \\ /\\_ \\
\\ \\ \\L\\ \\\\//\\ \\ \\//\\ \\ __ __ _ __ ___
\\ \\ __ \\ \\ \\ \\ \\ \\ \\ /'__\`\\ /'_ \`\\/\\\`'__\\/ __\`\\
\\ \\ \\/\\ \\ \\_\\ \\_ \\_\\ \\_/\\ __//\\ \\L\\ \\ \\ \\//\\ \\L\\ \\
\\ \\_\\ \\_\\/\\____\\/\\____\\ \\____\\ \\____ \\ \\_\\\\ \\____/
\\/_/\\/_/\\/____/\\/____/\\/____/\\/___L\\ \\/_/ \\/___/
/\\____/
\\_/__/
Windows binary distribution.
This package contains precompiled copies of the Windows DLL files for the
Allegro library, to save you having to compile it yourself. This is not a
complete distribution of Allegro, as it does not contain any of the
documentation, example programs, headers, etc. You need to download the full
source version, and then just unzip this package over the top of it.
To install, run the batch file msvcmake.bat, either from a command prompt or
by double-clicking on it from the Windows explorer. This will hopefully be
able to autodetect all the details of where to find your compiler, and will
automatically compile the various support programs that come with Allegro.
At the end of the install process you will be asked whether to copy libs and
headers into your compiler directories, and whether to install the DLL files
into the Windows system directory. You should normally say yes here, but if
you prefer, you can leave these files in the Allegro directory, and then
specify the paths to them later on, when you come to compile your own
programs using Allegro.
There are three versions of the DLL included in this zip:
alleg$ver.dll is the normal optimised version
alld$ver.dll is the debugging build, and should be used during development
allp$ver.dll is a profiling build, for collecting performance info
For more general information about using Allegro, see the readme.txt and
docs/build/msvc.txt files from the source distribution.
END_OF_README
echo "Creating $name.zip..."
cd ..
if [ -f $name.zip ]; then rm $name.zip; fi
if [ "$ALLEGRO_USE_CYGWIN" = "1" ]; then
unix2dos allegro/$name.txt
unix2dos allegro/msvcmake.bat
fi
zip -9 $name.zip allegro/$name.txt allegro/msvcmake.bat allegro/vcvars.exe allegro/askq.exe allegro/lib/msvc/*.dll
cd allegro
rm $name.txt msvcmake.bat vcvars.exe askq.exe
echo "Done!"