aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.win32
blob: 8a1192fce25d85b29c04e8540abc5701c381f2f7 (plain) (blame)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
include Makefile.inc

ALL : build

REL=..\release
EREL=$(REL)\ejabberd-$(EJABBERD_VERSION)
EBIN_DIR=$(EREL)\ebin
SRC_DIR=$(EREL)\src
PRIV_DIR=$(EREL)\priv
SO_DIR=$(EREL)
MSGS_DIR=$(EREL)\msgs
WIN32_DIR=$(EREL)\win32
DOC_DIR=$(EREL)\doc

NSIS_SCRIPT=win32\ejabberd.nsi
NSIS_HEADER=win32\ejabberd.nsh

installer : $(NSIS_SCRIPT) $(NSIS_HEADER)
	makensis $(NSIS_SCRIPT)

$(NSIS_HEADER) : Makefile.inc
	echo !define OUTFILEDIR "..\$(REL)" >$(NSIS_HEADER)
	echo !define TESTDIR "..\$(REL)\ejabberd-$(EJABBERD_VERSION)" >>$(NSIS_HEADER)
	echo !define VERSION "$(EJABBERD_VERSION)" >>$(NSIS_HEADER)

release_clean :
	if exist $(REL) rd /s /q $(REL)


release : build release_clean
	mkdir $(REL)
	mkdir $(EREL)
	mkdir $(EBIN_DIR)
	copy *.beam $(EBIN_DIR)
	@erase $(EBIN_DIR)\configure.beam
	copy *.app $(EBIN_DIR)
	copy *.dll $(SO_DIR)
	mkdir $(MSGS_DIR)
	copy msgs\*.msg $(MSGS_DIR)
	mkdir $(WIN32_DIR)
	copy win32\ejabberd.cfg $(EREL)
	copy win32\inetrc $(EREL)
	copy $(SYSTEMROOT)\system32\libeay32.dll $(EREL)
	copy $(SYSTEMROOT)\system32\ssleay32.dll $(EREL)
	copy win32\ejabberd.ico $(WIN32_DIR)
	mkdir $(SRC_DIR)
	copy *.app $(SRC_DIR)
	copy *.erl $(SRC_DIR)
	copy *.hrl $(SRC_DIR)
	copy *.c $(SRC_DIR)
	mkdir $(SRC_DIR)\eldap
	copy eldap\eldap.* $(SRC_DIR)\eldap
	copy eldap\ELDAPv3.asn $(SRC_DIR)\eldap
	mkdir $(SRC_DIR)\mod_irc
	copy mod_irc\*.erl $(SRC_DIR)\mod_irc
	copy mod_irc\*.c $(SRC_DIR)\mod_irc
	mkdir $(SRC_DIR)\mod_muc
	copy mod_muc\*.erl $(SRC_DIR)\mod_muc
	mkdir $(SRC_DIR)\mod_pubsub
	copy mod_pubsub\*.erl $(SRC_DIR)\mod_pubsub
	mkdir $(SRC_DIR)\mod_proxy65
	copy mod_proxy65\*.erl $(SRC_DIR)\mod_proxy65
	copy mod_proxy65\*.hrl $(SRC_DIR)\mod_proxy65
	mkdir $(SRC_DIR)\stringprep
	copy stringprep\*.erl $(SRC_DIR)\stringprep
	copy stringprep\*.c $(SRC_DIR)\stringprep
	copy stringprep\*.tcl $(SRC_DIR)\stringprep
	mkdir $(SRC_DIR)\stun
	copy stun\*.erl $(SRC_DIR)\stun
	copy stun\*.hrl $(SRC_DIR)\stun
	mkdir $(SRC_DIR)\tls
	copy tls\*.erl $(SRC_DIR)\tls
	copy tls\*.c $(SRC_DIR)\tls
	mkdir $(SRC_DIR)\ejabberd_zlib
	copy ejabberd_zlib\*.erl $(SRC_DIR)\ejabberd_zlib
	copy ejabberd_zlib\*.c $(SRC_DIR)\ejabberd_zlib
	mkdir $(SRC_DIR)\web
	copy web\*.erl $(SRC_DIR)\web
	mkdir $(SRC_DIR)\odbc
	copy odbc\*.erl $(SRC_DIR)\odbc
	copy odbc\*.sql $(EREL)
	mkdir $(DOC_DIR)
	copy ..\doc\*.txt $(DOC_DIR)
	copy ..\doc\*.html $(DOC_DIR)
	copy ..\doc\*.png $(DOC_DIR)

SOURCE = expat_erl.c
OBJECT = expat_erl.o
DLL    = expat_erl.dll

build : $(DLL) compile-beam all-recursive

all-recursive :
	cd eldap
	nmake -nologo -f Makefile.win32
	cd ..\mod_irc
	nmake -nologo -f Makefile.win32
	cd ..\mod_muc
	nmake -nologo -f Makefile.win32
	cd ..\mod_pubsub
	nmake -nologo -f Makefile.win32
	cd ..\mod_proxy65
	nmake -nologo -f Makefile.win32
	cd ..\stringprep
	nmake -nologo -f Makefile.win32
	cd ..\stun
	nmake -nologo -f Makefile.win32
	cd ..\tls
	nmake -nologo -f Makefile.win32
	cd ..\ejabberd_zlib
	nmake -nologo -f Makefile.win32
	cd ..\web
	nmake -nologo -f Makefile.win32
	cd ..\odbc
	nmake -nologo -f Makefile.win32
	cd ..

compile-beam : XmppAddr.hrl
	erl -s make all report -noinput -s erlang halt

XmppAddr.hrl : XmppAddr.asn1
	erlc -bber_bin +der +compact_bit_string +optimize +noobj XmppAddr.asn1

CLEAN : clean-recursive clean-local

clean-local :
	-@erase $(OBJECT)
	-@erase $(DLL)
	-@erase expat_erl.exp
	-@erase expat_erl.lib
	-@erase *.beam
	-@erase XmppAddr.asn1db
	-@erase XmppAddr.erl
	-@erase XmppAddr.hrl

clean-recursive :
	cd eldap
	nmake -nologo -f Makefile.win32 clean
	cd ..\mod_irc
	nmake -nologo -f Makefile.win32 clean
	cd ..\mod_muc
	nmake -nologo -f Makefile.win32 clean
	cd ..\mod_pubsub
	nmake -nologo -f Makefile.win32 clean
	cd ..\mod_proxy65
	nmake -nologo -f Makefile.win32 clean
	cd ..\stringprep
	nmake -nologo -f Makefile.win32 clean
	cd ..\stun
	nmake -nologo -f Makefile.win32 clean
	cd ..\tls
	nmake -nologo -f Makefile.win32 clean
	cd ..\ejabberd_zlib
	nmake -nologo -f Makefile.win32 clean
	cd ..\web
	nmake -nologo -f Makefile.win32 clean
	cd ..\odbc
	nmake -nologo -f Makefile.win32 clean
	cd ..

distclean : release_clean clean
	-@erase $(NSIS_HEADER)
	-@erase Makefile.inc

CC=cl.exe
CC_FLAGS=-nologo -D__WIN32__ -DWIN32 -DWINDOWS -D_WIN32 -DNT $(EXPAT_FLAG) -MD -Ox -I"$(ERLANG_DIR)\usr\include" -I"$(EI_DIR)\include" -I"$(EXPAT_DIR)\source\lib"

LD=link.exe
LD_FLAGS=-release -nologo -incremental:no -dll "$(EI_DIR)\lib\ei_md.lib" "$(EI_DIR)\lib\erl_interface_md.lib" "$(EXPAT_LIB)" MSVCRT.LIB kernel32.lib advapi32.lib gdi32.lib user32.lib comctl32.lib comdlg32.lib shell32.lib

$(DLL) : $(OBJECT)
	$(LD) $(LD_FLAGS) -out:$@ $<

$(OBJECT) : $(SOURCE)
	$(CC) $(CC_FLAGS) -c -Fo$@ $<