#!/bin/sh # How to build ImageMagick with Visual Studio 2010 in Cygwin # The result is placed in a directory laid out as if the Installshield installer had been run # except that .pdb files are included, and both release and debug builds are included # # Dan Kegel, dank@kegel.com, for Oblong.com set -e set -x # Set this to where you want the result to live DEST=/cygdrive/c/ImageMagick # If you once start msdev with tmp or temp defined, you'll have to # reboot to recover. unset tmp unset temp unset TMP unset TEMP PATH="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE":$PATH convert() { devenv /upgrade $1 # Only needed for strange projects like im's configure that don't have default build? if ! grep Build.0 $1 then # Turn on Release|Win32 version # Finds line like # {D2A8E3B2-ED53-4E72-7DFC-2CDEAC936B7A}.Release|Win32.ActiveCfg = Release|Win32 # and adds a line like # {D2A8E3B2-ED53-4E72-7DFC-2CDEAC936B7A}.Release|Win32.Build.0 = Release|Win32 # after it. cp $1 $1.old sed 's,\(.*\}.Release.Win32\).ActiveCfg = Release.Win32,&\ \1.Build.0 = Release|Win32,' < $1.old > $1 fi return 0 } test -f ImageMagick-6.8.5-9.zip || wget ftp://ftp.fifi.org/pub/ImageMagick/windows/ImageMagick-6.8.5-9.zip rm -rf ImageMagick-6.8.5 unzip ImageMagick-6.8.5-9.zip ( cd ImageMagick-6.8.5/VisualMagick/configure # Convert to visual C++ 2010 format and compile it # Happily, it ships already compiled #convert configure.sln #devenv configure.sln /Build "Release|Win32" # And run it. User should accept all defaults. ./configure ) cd ImageMagick-6.8.5/VisualMagick # Convert to visual C++ 2010 format convert VisualDynamicMT.sln # And at last build imagemagic. devenv VisualDynamicMT.sln /Build "Release|Win32" devenv VisualDynamicMT.sln /Build "Debug|Win32" # Finally, create roughly the same (strange) directory structure that the Windows installer does. # Copy commands are direct translations of Source: lines from InstallShield source files # Comments indicate which Installshield source file each line came from # This is an incomplete copy; add more lines as needed. # It also assumes a DLL build. # Original is Copyright (C) 2003 - 2008 GraphicsMagick Group # See # http://www.imagemagick.org/script/license.php app=$DEST SRC=ImageMagick-6.8.5/VisualMagick # installer/body.isx MagickAppDirectory="${app}" MagickLibDirectory="${app}" MagickConfigDirectory="${app}" MagickCodersDirectory="${app}\modules\coders" MagickFiltersDirectory="${app}\modules\filters" mkdir -p $MagickCodersDirectory mkdir -p $MagickFiltersDirectory mkdir -p $app/lib mkdir -p $app/include/magick mkdir -p $app/include/wand mkdir -p $app/include/Magick++ mkdir -p $app/Magick++_Demo # installer/inc/files-dll.isx cp $SRC/bin/CORE_*.{dll,pdb} ${MagickLibDirectory} cp $SRC/bin/IM_MOD_*.{dll,pdb} ${MagickCodersDirectory} cp $SRC/bin/analyze.{dll,pdb} ${MagickFiltersDirectory} cp $SRC/bin/X11.dll ${MagickLibDirectory} cp $SRC/bin/Xext.dll ${MagickLibDirectory} # installer/inc/files-development.isx # Development libraries cp $SRC/lib/CORE_RL_Magick++_.lib ${app}/lib cp $SRC/lib/CORE_RL_magick_.lib ${app}/lib cp $SRC/lib/CORE_RL_wand_.lib ${app}/lib cp $SRC/lib/X11.lib ${app}/lib # Development headers cp $SRC/../magick/*.h ${app}/include/magick # MagickWand headers cp $SRC/../wand/*.h ${app}/include/wand # Magick++ headers cp $SRC/../Magick++/lib/Magick++.h ${app}/include cp $SRC/../Magick++/lib/Magick++/*.h ${app}/include/Magick++ # Magick++ demos cp $SRC/installer/Magick++_Demo/*.dsw ${app}/Magick++_Demo cp $SRC/installer/Magick++_Demo/*.dsp ${app}/Magick++_Demo cp $SRC/installer/Magick++_Demo/*.bat ${app}/Magick++_Demo cp $SRC/installer/Magick++_Demo/README.txt ${app}/Magick++_Demo cp $SRC/../Magick++/demo/*.cpp ${app}/Magick++_Demo cp $SRC/../Magick++/demo/*.miff ${app}/Magick++_Demo # installer/inc/files-documentation.isx cp $SRC/../ChangeLog ${app}/ChangeLog.txt cp $SRC/../LICENSE ${app}/License.txt cp $SRC/../NOTICE ${app}/Notice.txt cp $SRC/bin/NOTICE ${MagickAppDirectory}/Notice-1.txt