Windows binary distribution II
- Subject: Windows binary distribution II
- From: Billinghurst, David (CRTS)
- Date: Sun, 31 Mar 2002 22:50:01 +1000
The attached makefile builds a windows binary distribution.
It is similar to the script I posted earlier this week,
but I have found the makefile easier to work with as it allows
incremental development.
It also has rules to:
- patch a couple of demo files
- generate .html from .texi files
Again, this is more proof of concept than finished product, but
the result is broadly comparable to the maxima-5.5 windows binary
distribution, at least on win2k.
Raw materials are:
- full cygwin distribution
- mingw-1.1 distribution for gcc
- gcl cvs
- maxima cvs
- utexas maxima-5.5 windows binary (for winkill.exe and tclwinkill.dll)
- windows freewrap5.0 from freewrap.sourceforge.com
Build mingw gcl and maxima using Mike Thomas's recipe
Install freewrap and maxima-5.5 binary somewhere
Create a new directory
Copy the attached makefile into it and update the paths at the top
make
>From the windows gui create a shortcut in root of binary distribution,
assumed to be whatever, with
- name: xmaxima
- target: whatever\src\xmaxima.exe
- Start in: whatever\
- Icon: whatever\src\max.ico
#################### Makefile #############################
# Create a windows binary distribution - just working notes
# maxima-5.5 binary distribution
BINDIR_55=/cygdrive/c/Programs/maxima
# Freewap 5.0 for windows
FREEWRAP=/cygdrive/c/Programs/freewrap5.0
# Maxima source/build tree
MAXIMA_BUILD=/cygdrive/c/temp/maxima
# Location of mingw gcc.exe
GCC_EXE = \"C:\\\\Programs\\\\mingw\\\\bin\\\\gcc\"
SUBDIRS = src doc demo info share
all: dirs root src_ doc_ demo_ info_
dirs:
for D in $(SUBDIRS); \
do \
[ -d $$D ] || mkdir $$D; \
done
########### root directory #################################
root: maxima.gif intro.html tclpip83.dll init.lsp
maxima.gif: ${MAXIMA_BUILD}/archive/maxima.gif
cp -p $< $@
tclpip83.dll: ${FREEWRAP}/tclpip83.dll
cp -p $< $@
intro.html: ${MAXIMA_BUILD}/interfaces/xmaxima/intro.html
cp -p $< $@
# This should generate a file containing a line like
# (setq compiler::*cc* "c:\\programs\\mingw\\bin\\gcc" )
# which points to the mingw gcc.exe
init.lsp:
@echo "(setq compiler::*cc* $(GCC_EXE) )" > $@
########## src directory ###################################
src_: dirs src/maxima.exe src/plot.o src/server.lisp \
src/max.ico src/tclwinkill.dll \
src/winkill.exe src/xmaxima.exe
src/maxima.exe: ${MAXIMA_BUILD}/src/binary-gcl/maxima.exe
cp -p $< $@
# An empty file will do
src/plot.o:
touch $@
src/server.lisp: ${MAXIMA_BUILD}/archive/src/server.lisp
cp -p $< $@
src/max.ico: ${MAXIMA_BUILD}/archive/src/max.ico
cp -p $< $@
src/tclwinkill.dll: ${BINDIR_55}/src/tclwinkill.dll
cp -p $< $@
src/winkill.exe: ${BINDIR_55}/src/winkill.exe
cp -p $< $@
src/xmaxima.exe: ${MAXIMA_BUILD}/interfaces/xmaxima/xmaxima
sed -e 's/saved_maxima/maxima/' < $< > src/xmaxima.tcl
(cd src; ${FREEWRAP}/freewrap xmaxima.tcl -e; rm xmaxima.tcl)
########## doc ##############################
doc_: dirs doc_html doc_tests doc/manual.demo
doc_html: doc/examples.html doc/demos.html doc/plotmaxima.html \
doc/demo.html
doc/examples.html: ${MAXIMA_BUILD}/interfaces/xmaxima/examples.html
cp -p $< $@
doc/demos.html: ${MAXIMA_BUILD}/interfaces/xmaxima/demos.html
cp -p $< $@
doc/plotmaxima.html: ${MAXIMA_BUILD}/interfaces/xmaxima/plotmaxima.html
cp -p $< $@
doc/manual.demo: ${MAXIMA_BUILD}/demo/manual.demo
cp -p $< $@
# The tests can be run from xmaxima interface. Looks in doc
doc_tests: doc/rtest1.mac doc/rtest1a.mac doc/rtest2.mac doc/rtest3.mac \
doc/rtest4.mac doc/rtest5.mac doc/rtest6.mac doc/rtest6a.mac \
doc/rtest6b.mac doc/rtest7.mac doc/rtest8.mac doc/rtest9.mac \
doc/rtest9a.mac doc/rtest10.mac doc/rtest11.mac doc/rtest12.mac \
doc/rtest13.mac doc/rtest13s.mac doc/rtest14.mac doc/tests.lisp
doc/rtest%.mac: ${MAXIMA_BUILD}/tests/rtest%.mac
cp -p $< $@
doc/tests.lisp: ${MAXIMA_BUILD}/tests/tests.lisp
cp -p $< $@
############### demo ##################################
# These demos are listed in demos.html
demo_: demo/cf.dem demo/ezgcd.dem demo/macex.dem demo/macro.dem \
demo/eigen.dem share/eigen.mac \
demo/functs.dem share/functs.mac \
demo/simpsn.dem
demo/%.dem: ${MAXIMA_BUILD}/demo/%.dem
cp -p $< $@
demo/ezgcd.dem: ${MAXIMA_BUILD}/demo/ezgcd.dem
cp -p $< $@
demo/macex.dem: ${MAXIMA_BUILD}/demo/macex.dem
cp -p $< $@
demo/macro.dem: ${MAXIMA_BUILD}/demo/macro.dem
cp -p $< $@
# Need to change .mc to .mac (grep to confirm still required)
demo/eigen.dem: ${MAXIMA_BUILD}/share/matrix/eigen.dem
grep -q .mc $<
sed -e 's/\.mc/.mac/' < $< > $@
# Need to change .mc to .mac (grep to confirm still required)
demo/functs.dem: ${MAXIMA_BUILD}/share/simplification/functs.dem
grep -q .mc $<
sed -e 's/\.mc/.mac/' < $< > $@
demo/simpsn.dem: ${MAXIMA_BUILD}/share/numeric/simpsn.dem
cp -p $< $@
##### info #####
info_: info_info info_html
info_info: info/maxima.info info/maxima.info-1 info/maxima.info-2 info/maxima.info-3 \
info/maxima.info-4 info/maxima.info-5 info/maxima.info-6 info/maxima.info-7 \
info/maxima.info-8 info/maxima.info-9 info/maxima.info-10 info/maxima.info-11 \
info/maxima.info-12 info/maxima.info-13 info/maxima.info-14 info/maxima.info-15
INFO_HTML = info/maxima_toc.html info/maxima_1.html info/maxima_2.html info/maxima_3.html \
info/maxima_4.html info/maxima_5.html info/maxima_6.html info/maxima_7.html \
info/maxima_8.html info/maxima_9.html info/maxima_10.html info/maxima_11.html \
info/maxima_12.html info/maxima_13.html info/maxima_14.html info/maxima_15.html \
info/maxima_16.html info/maxima_17.html info/maxima_18.html info/maxima_19.html \
info/maxima_20.html info/maxima_21.html info/maxima_22.html info/maxima_23.html \
info/maxima_24.html info/maxima_25.html info/maxima_26.html info/maxima_27.html \
info/maxima_28.html info/maxima_29.html \
info/maxima_30.html info/maxima_31.html info/maxima_32.html info/maxima_33.html \
info/maxima_34.html info/maxima_35.html info/maxima_36.html info/maxima_37.html \
info/maxima_38.html info/maxima_39.html \
info/maxima_40.html info/maxima_41.html info/maxima_42.html
info_html: $(INFO_HTML)
info/maxima.inf%: ${MAXIMA_BUILD}/doc/info/maxima.inf%
cp -p $< $@
# Fudge this - ignore depenence on other texi files at present
$(INFO_HTML): ${MAXIMA_BUILD}/doc/info/maxima.texi
(cd info; texi2html -number -split_chapter -I ${MAXIMA_BUILD}/doc/info $< )
#### share #####
#
# Needed for demos
share/eigen.mac: ${MAXIMA_BUILD}/share/matrix/eigen.mac
cp -p $< $@
share/functs.mac: ${MAXIMA_BUILD}/share/simplification/functs.mac
cp -p $< $@