-
Notifications
You must be signed in to change notification settings - Fork 8
/
Makefile.win32
69 lines (56 loc) · 2.15 KB
/
Makefile.win32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- makefile -*-
# Assumes that ocp-indent-lib, ocp-index-lib have been installed as single
# findlib packages (with the Makefile.simple provided)
UNAME := $(shell uname)
ifeq (WIN,$(findstring WIN,$(UNAME)))
EXEEXT := .exe
else
EXEEXT :=
endif
WINLIBS=/cygdrive/c/usr/bin
GTK_MODULES=/cygdrive/c/usr/lib/gtk-2.0/2.10.0/
utils/mkwinapp$(EXEEXT): utils/mkwinapp.ml
ocamlfind ocamlopt -package unix -linkpkg -o $@ $^
src/%:
make -C src $*
ocaml-top$(EXEEXT): utils/mkwinapp$(EXEEXT) src/ocaml-top$(EXEEXT)
cp src/ocaml-top$(EXEEXT) .
utils/mkwinapp$(EXEEXT) ocaml-top$(EXEEXT)
.PHONY: clean
clean:
rm -f utils/mkwinapp$(EXEEXT)
make -C src clean
rm -rf inst
rm -f ocaml-top$(EXEEXT) ocaml-top.msi
RESOURCES = data/ocaml.lang data/def.lang data/cobalt.xml data/language2.rng data/toplevel_init.ml data/logo.png data/logo.ico data/gtkrc
ICONS = $(wildcard data/icons/*.png)
.PHONY: inst/ocaml-top
inst/ocaml-top: ocaml-top$(EXEEXT) $(RESOURCES) $(ICONS)
rm -rf inst
mkdir -p inst/ocaml-top/data/icons
cp ocaml-top$(EXEEXT) inst/ocaml-top
cp $(RESOURCES) inst/ocaml-top/data
cp $(ICONS) inst/ocaml-top/data/icons
cp $$(PATH=$(WINLIBS):$$PATH ldd ocaml-top.exe | awk '/usr\/bin/ { print $$3 }') \
inst/ocaml-top
mkdir -p inst/ocaml-top/data/engines
cp $(GTK_MODULES)/engines/libwimp.dll inst/ocaml-top/data/engines
ocaml-top.zip: inst/ocaml-top
cd inst && zip -r ../ocaml-top.zip ocaml-top
WIXDIR = "/cygdrive/c/Program Files (x86)/WiX Toolset v3.7/bin"
%.wixobj: %.wxs
$(WIXDIR)/candle.exe -d"DataDir=ocaml-top\\data" -d"DllDir=ocaml-top" -out $@ $^
inst/data.wxs: inst/ocaml-top
cd inst && $(WIXDIR)/heat.exe dir ocaml-top/data -srd -dr DATADIR -cg data -gg \
-var var.DataDir -out data.wxs
inst/dlls.wxs: inst/ocaml-top
cd inst && mkdir dll && cp ocaml-top/*.dll dll && \
$(WIXDIR)/heat.exe dir dll -srd -dr WINSYSDIR -cg dlls -gg -var var.DllDir \
-out dlls.wxs
rm -rf inst/dll
ocaml-top.msi: inst/data.wixobj inst/dlls.wixobj windows/ocaml-top.wixobj
cd inst && $(WIXDIR)/light.exe -ext WixUIExtension -out ../ocaml-top.msi \
data.wixobj dlls.wixobj ../windows/ocaml-top.wixobj
.PHONY: testmsi
testmsi: ocaml-top.msi
msiexec /i $^ /l'*' msi.log