From: glenlow Date: Fri, 16 May 2008 06:43:30 +0000 (+0000) Subject: prebuild and build makefiles for building full Windows binary install package X-Git-Tag: LAST_LIBGRAPH~32^2~4065 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ff95eaebf7dbc2a5da1d8338b544ee7eb608cf0e;p=graphviz prebuild and build makefiles for building full Windows binary install package --- diff --git a/configure.ac b/configure.ac index 27c647f1a..9d0276dbb 100644 --- a/configure.ac +++ b/configure.ac @@ -2790,7 +2790,7 @@ AC_CONFIG_FILES(Makefile macosx/Info.plist macosx/graphviz.pmdoc/01local.xml macosx/graphviz.pmdoc/02graphviz.xml - windows/graphviz.wxs + windows/build/graphviz.wxs windows/Properties/AssemblyInfo.cs plugin/Makefile plugin/core/Makefile diff --git a/winbuild b/winbuild deleted file mode 100755 index 38aadc675..000000000 --- a/winbuild +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/sh - -MSBUILD="$WINDIR\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe" -PLATFORMSDK="$PROGRAMFILES\Microsoft Visual Studio 8\VC\PlatformSDK" -PLATFORMSDKINCLUDE="$PLATFORMSDK\Include" -PLATFORMSDKLIB="$PLATFORMSDK\Lib" - -GRAPHVIZ_BUILDING= -PACKAGE= - -# first pass -- getting + prepping - -for ARG -do - PREP= - BUILD= - case $ARG in - --help ) - cat < in Fragment to +# (5) convert last in Fragment to +$(addsuffix .wxs, $(DIRS)) : %.wxs : usr/local/bin/$(DOT) + @echo + @echo HEATING GRAPHVIZ... + @echo + "$(HEAT)" dir "usr\local\$*" -sfrag -out $*-pre.wxs && \ + $(SED) 's/PUT-GUID-HERE/*/g; s/Id="ComponentGroup1"/Id="$*"/g; s/Id="graphviz"/Id="$*_graphviz"/g; $!N; s/\(\W*\)/\1/g; s/<\/Directory>\(\W*<\/Fragment>\)/<\/DirectoryRef>\1/g; P; D' $*-pre.wxs >$*.wxs + +# bin directory also requires the dependent DLL's to be copied over first + +bin.wxs : $(addprefix usr/local/bin/, $(DLLS)) + +$(addprefix usr/local/bin/, $(DLLS)) : usr/local/bin/% : $(LOCAL_BIN)/% + mkdir -p usr/local/bin && cp $^ usr/local/bin + +# etc directory also requires the fontconfig files to be copied over first + +etc.wxs : usr/local/etc/fonts + +usr/local/etc/fonts : $(LOCAL)/etc/fonts + mkdir -p usr/local/etc && cp -R $^ usr/local/etc + +# install into usr/local + +usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) + @echo + @echo INSTALLING GRAPHVIZ... + @echo + $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip + +# +# process the viewer +# + +graphviz.wixobj : $(GV_DIR)/Makefile x86/Release/Graphviz.exe + @echo + @echo CANDLING GRAPHVIZ GUI... + @echo + "$(CANDLE)" -out graphviz.wixobj graphviz.wxs + +x86/Release/Graphviz.exe: ../*.cs ../*.resx ../Properties/*.cs + @echo + @echo BUILDING GRAPHVIZ GUI... + @echo + "$(MSBUILD)" "..\graphviz.csproj" -p:Configuration=Release -p:Platform=x86 + +# +# configure + make +# + +$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile + @echo + @echo MAKING GRAPHVIZ... + @echo + if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi && \ + $(MAKE) -C $(GV_DIR) + +$(GV_DIR)/Makefile: $(GV_DIR)/configure + @echo + @echo CONFIGURING GRAPHVIZ... + @echo + cd $(GV_DIR) && ./configure --enable-swig=no --enable-tcl=no --without-x --with-ipsepcola --with-gdiplus --with-platformsdkincludedir="$(PLATFORMSDK)\Include" --with-platformsdklibdir="$(PLATFORMSDK)\Lib" CFLAGS="-O2 -mms-bitfields -I$(LOCAL_INCLUDE)" CXXFLAGS="-O2 -mms-bitfields -I$(LOCAL_INCLUDE)" LDFLAGS="-L$(LOCAL_LIB)" GDLIB_CONFIG="$(LOCAL_BIN)/gdlib-config.exe" LEX="$(LOCAL_BIN)/flex.exe" PKG_CONFIG="$(LOCAL_BIN)/pkg-config.exe" YACC="$(LOCAL_BIN)/yacc.exe" diff --git a/windows/graphviz.wxs.in b/windows/build/graphviz.wxs.in similarity index 94% rename from windows/graphviz.wxs.in rename to windows/build/graphviz.wxs.in index f52ce4641..177b96824 100755 --- a/windows/graphviz.wxs.in +++ b/windows/build/graphviz.wxs.in @@ -46,7 +46,7 @@ - + @@ -54,16 +54,17 @@ - + - + + @@ -77,6 +78,7 @@ + diff --git a/windows/graphviz.msi.make b/windows/graphviz.msi.make deleted file mode 100755 index ef0b4cbc5..000000000 --- a/windows/graphviz.msi.make +++ /dev/null @@ -1,27 +0,0 @@ -WIX = $(PROGRAMFILES)\Windows Installer XML v3\bin -CANDLE = "$(WIX)\candle.exe" -LIGHT = "$(WIX)\light.exe" -HEAT = "$(WIX)\heat.exe" -SED = sed -BUILD = build\usr\local - -graphviz.msi : graphviz.wixobj bin.wixobj include.wixobj lib.wixobj share.wixobj - $(LIGHT) -ext WixUIExtension -cultures:en-us -out $@ $^ - -%.wixobj : %.wxs - $(CANDLE) -sw1092 -out $@ $^ - -# we need to post process dir.wxs with sed to: -# (1) change the GUID markers PUT-GUID-HERE to the autogenerated * -# (2) change the ComponentGroup1 ID to the dir -# (3) change the graphviz id of a directory to dir_graphviz -# (4) convert first in Fragment to -# (5) convert last in Fragment to -bin.wxs include.wxs lib.wxs share.wxs : %.wxs : $(shell find "$(BUILD)" -type f) - $(HEAT) dir "$(BUILD)\$*" -sfrag -out $*-pre.wxs && \ - $(SED) 's/PUT-GUID-HERE/*/g; s/Id="ComponentGroup1"/Id="$*"/g; s/Id="graphviz"/Id="$*_graphviz"/g; $!N; s/\(\W*\)/\1/g; s/<\/Directory>\(\W*<\/Fragment>\)/<\/DirectoryRef>\1/g; P; D' $*-pre.wxs >$*.wxs - -.PHONY : clean -clean : - -rm *.msi *.wixobj bin*.wxs include*.wxs lib*.wxs share*.wxs - diff --git a/windows/prebuild/Makefile b/windows/prebuild/Makefile new file mode 100755 index 000000000..58839f1b5 --- /dev/null +++ b/windows/prebuild/Makefile @@ -0,0 +1,632 @@ +# tools + +WGET=wget +MAKE=make +TAR=tar +STRIP=strip + +# local + +LOCAL=$(CURDIR)/usr/local +LOCAL_INCLUDE=$(LOCAL)/include +LOCAL_LIB=$(LOCAL)/lib +LOCAL_BIN=$(LOCAL)/bin + +# tool URL +UNZIP_BIN_URL=ftp://ftp.info-zip.org/pub/infozip/win32/unz552xn.exe +PKGCONFIG_BIN_URL=http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip +GLIB_BIN_URL=http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.16/glib-2.16.3.zip +FLEX_BIN_URL=http://downloads.sourceforge.net/gnuwin32/flex-2.5.4a-1-bin.zip +BYACC_BIN_URL=http://downloads.sourceforge.net/gnuwin32/byacc-1.9-1-bin.zip + +# package URL +ICONV_URL=http://yukihiro.nakadaira.googlepages.com/win_iconv.zip +ZLIB_URL=http://www.zlib.net/zlib-1.2.3.tar.gz +EXPAT_URL=http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz +FREETYPE_URL=http://downloads.sourceforge.net/freetype/freetype-2.3.5.tar.gz +FONTCONFIG_URL=http://fontconfig.org/release/fontconfig-2.5.91.tar.gz +PNG_URL=http://prdownloads.sourceforge.net/libpng/libpng-1.2.26.tar.gz +GD_URL=http://www.libgd.org/releases/gd-2.0.35.tar.gz +PIXMAN_URL=http://cairographics.org/releases/pixman-0.10.0.tar.gz +CAIRO_URL=http://cairographics.org/releases/cairo-1.6.4.tar.gz +GETTEXT_URL=ftp://mirrors.kernel.org/gnu/gettext/gettext-0.17.tar.gz +GLIB_URL=http://ftp.gnome.org/pub/GNOME/sources/glib/2.16/glib-2.16.3.tar.gz +PANGO_URL=http://ftp.gnome.org/pub/GNOME/sources/pango/1.20/pango-1.20.2.tar.gz + +# tools +UNZIP_BIN=unzip.exe +PKGCONFIG_BIN=pkg-config.exe +GLIB_BIN=libglib-2.0-0.dll +FLEX_BIN=flex.exe +YACC_BIN=yacc.exe + +# libraries +ICONV=libiconv.dll.a +ZLIB=libz.dll.a +EXPAT=libexpat.la +FREETYPE=libfreetype.la +FONTCONFIG=libfontconfig.la +PNG=libpng.dll.a +GD=libgd.la +PIXMAN=libpixman-1.la +CAIRO=libcairo.la +INTL=libintl.la +GLIB=libglib-2.0.la +PANGO=libpango-1.0.la + +# tool archives +UNZIP_BIN_EXE=$(notdir $(UNZIP_BIN_URL)) +PKGCONFIG_BIN_ZIP=$(notdir $(PKGCONFIG_BIN_URL)) +GLIB_BIN_ZIP=$(notdir $(GLIB_BIN_URL)) +FLEX_BIN_ZIP=$(notdir $(FLEX_BIN_URL)) +BYACC_BIN_ZIP=$(notdir $(BYACC_BIN_URL)) + +# library directories +dirname=$(basename $(basename $(notdir $(1)))) +ICONV_DIR=$(call dirname, $(ICONV_URL)) +ZLIB_DIR=$(call dirname, $(ZLIB_URL)) +EXPAT_DIR=$(call dirname, $(EXPAT_URL)) +FREETYPE_DIR=$(call dirname, $(FREETYPE_URL)) +FONTCONFIG_DIR=$(call dirname, $(FONTCONFIG_URL)) +PNG_DIR=$(call dirname, $(PNG_URL)) +GD_DIR=$(call dirname, $(GD_URL)) +PIXMAN_DIR=$(call dirname, $(PIXMAN_URL)) +CAIRO_DIR=$(call dirname, $(CAIRO_URL)) +GETTEXT_DIR=$(call dirname, $(GETTEXT_URL)) +GLIB_DIR=$(call dirname, $(GLIB_URL)) +PANGO_DIR=$(call dirname, $(PANGO_URL)) + +# +# target +# +# --prefix to dump results into usr/local not /usr/local +# --disable-dependency-tracking since this is one-off build +# --enable-static=no since this doesn't build static libraries +# --enable-shared=yes since this builds dynamic libraries +# -O2 to optimize code for speed and performance +# -mms-bitfields to use Microsoft bit field layout + +BASE_CONFIG=--prefix=$(LOCAL) --disable-dependency-tracking --enable-static=no --enable-shared=yes PKG_CONFIG="$(LOCAL_BIN)/$(PKGCONFIG_BIN)" +FLAG_CONFIG=CFLAGS="-O2 -mms-bitfields -I$(LOCAL_INCLUDE)" LDFLAGS="-L$(LOCAL_LIB)" + +install: $(LOCAL_LIB)/$(PANGO) $(LOCAL_LIB)/$(GD) $(LOCAL_BIN)/$(FLEX_BIN) $(LOCAL_BIN)/$(YACC_BIN) + +uninstall: + $(MAKE) -C $(PANGO_DIR) uninstall + $(MAKE) -C $(GLIB_DIR) uninstall + $(MAKE) -C $(GETTEXT_DIR) uninstall + $(MAKE) -C $(CAIRO_DIR) uninstall + $(MAKE) -C $(PIXMAN_DIR) uninstall + $(MAKE) -C $(GD_DIR) uninstall + rm -rf $(LOCAL_BIN)/*png* $(LOCAL_INCLUDE)/*png* $(LOCAL_LIB)/*png* $(LOCAL_LIB)/pkgconfig/*png* + $(MAKE) -C $(FONTCONFIG_DIR) uninstall + $(MAKE) -C $(FREETYPE_DIR) uninstall + $(MAKE) -C $(EXPAT_DIR) uninstall + $(MAKE) -C $(ZLIB_DIR) uninstall + rm -rf $(LOCAL_BIN)/*iconv* $(LOCAL_INCLUDE)/*iconv* $(LOCAL_LIB)/*iconv* + rm -rf $(LOCAL_BIN)/$(PKGCONFIG_BIN) + rm -rf $(LOCAL_BIN)/$(GLIB_BIN) + rm -rf $(LOCAL_BIN)/flex.exe + rm -rf $(LOCAL_BIN)/flex++.exe + rm -rf $(LOCAL_BIN)/$(YACC_BIN) + +distclean: + $(MAKE) -C $(PANGO_DIR) distclean + $(MAKE) -C $(GLIB_DIR) distclean + $(MAKE) -C $(GETTEXT_DIR) distclean + $(MAKE) -C $(CAIRO_DIR) distclean + $(MAKE) -C $(PIXMAN_DIR) distclean + $(MAKE) -C $(GD_DIR) distclean + $(MAKE) -C $(PNG_DIR) clean + $(MAKE) -C $(FONTCONFIG_DIR) distclean + $(MAKE) -C $(FREETYPE_DIR) distclean + $(MAKE) -C $(EXPAT_DIR) distclean + $(MAKE) -C $(ZLIB_DIR) -f win32/Makefile.gcc clean + $(MAKE) -C $(ICONV_DIR) clean + +# +# pango +# +# --with-included-modules=yes to embed pango modules within pango itself +# patch to run installed instead of local pango-querymodules, otherwise dependent DLL won't load + +$(LOCAL_LIB)/$(PANGO): $(PANGO_DIR)/pango/$(PANGO) + @echo + @echo INSTALLING PANGO... + @echo + $(MAKE) -C $(PANGO_DIR) install-strip + +$(PANGO_DIR)/pango/$(PANGO): $(PANGO_DIR)/Makefile + @echo + @echo MAKING PANGO... + @echo + if [[ -e $@ ]]; then $(MAKE) -C $(PANGO_DIR) clean; fi && \ + PATH="$$PATH:/$(LOCAL_BIN)" && $(MAKE) -C $(PANGO_DIR) + +$(PANGO_DIR)/Makefile: $(LOCAL_LIB)/$(CAIRO) $(LOCAL_LIB)/$(GLIB) | $(LOCAL_BIN)/$(PKGCONFIG_BIN) $(PANGO_DIR)/configure + @echo + @echo CONFIGURING PANGO... + @echo + cd $(PANGO_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --with-included-modules=yes + +$(PANGO_DIR)/configure: | $(PANGO_DIR).tar.gz + @echo + @echo UNTARRING PANGO... + @echo + $(TAR) xzf $| && patch -p0