5
5
# #
6
6
7
7
8
- VERSION = 0.43
8
+ # Fetch the version number from its source, in flexdll.opam
9
+ VERSION = \
10
+ $(eval VERSION := $$(shell sed -ne 's/^version: * "\(.* \) "/\1/p' flexdll.opam) )$(VERSION )
11
+
9
12
all : flexlink.exe support
10
13
11
14
OCAML_CONFIG_FILE =$(shell cygpath -ad "$(shell ocamlopt -where 2>/dev/null) /Makefile.config" 2>/dev/null)
12
15
include $(OCAML_CONFIG_FILE )
13
16
OCAMLOPT =ocamlopt
14
17
EMPTY =
15
18
SPACE =$(EMPTY ) $(EMPTY )
19
+ COMMA =,
16
20
OCAML_VERSION: =$(firstword $(subst ~, ,$(subst +, ,$(shell $(OCAMLOPT ) -version 2>/dev/null) ) ) )
17
21
ifeq ($(OCAML_VERSION ) ,)
18
22
OCAML_VERSION: =0
@@ -31,7 +35,7 @@ MIN64CC = $(MINGW64_PREFIX)gcc
31
35
CYGWIN64_PREFIX = x86_64-pc-cygwin-
32
36
CYG64CC = $(CYGWIN64_PREFIX ) gcc
33
37
34
- version.ml : Makefile
38
+ version.ml : Makefile flexdll.opam
35
39
echo " let version = \" $( VERSION) \" " > version.ml
36
40
echo " let mingw_prefix = \" $( MINGW_PREFIX) \" " >> version.ml
37
41
echo " let mingw64_prefix = \" $( MINGW64_PREFIX) \" " >> version.ml
@@ -160,11 +164,32 @@ flexlink.exe: $(OBJS) $(RES)
160
164
rm -f $@
161
165
$(RES_PREFIX ) $(OCAMLOPT ) -o $@ $(LINKFLAGS ) $(OBJS )
162
166
163
- version.res : version.rc
164
- $(RES_PREFIX ) rc $<
165
-
166
- version_res.o : version.rc
167
- $(TOOLPREF ) windres -i $< -o $@
167
+ # VERSION at present is x.y, but there would be no reason not to have x.y.z in
168
+ # future. Windows versions have four components. $(FLEXDLL_FULL_VERSION) adds
169
+ # additional .0s to the right of $(VERSION) such that $(FLEXDLL_FULL_VERSION)
170
+ # has four version components.
171
+ # Thus if VERSION=0.43, then FLEXDLL_FULL_VERSION=0.43.0.0
172
+ # $(FLEXDLL_VS_VERSION_INFO) is the same value, but using a ',' to separate the
173
+ # items rather than a '.', as this is the format used in a VS_VERSION_INFO block
174
+ # in Resource Compiler format.
175
+ FLEXDLL_FULL_VERSION = \
176
+ $(subst $(SPACE ) ,.,$(wordlist 1, 4, $(subst .,$(SPACE ) ,$(VERSION ) ) 0 0 0) )
177
+ FLEXDLL_VS_VERSION_INFO = $(subst .,$(COMMA ) ,$(FLEXDLL_FULL_VERSION ) )
178
+
179
+ RC_FLAGS = \
180
+ /d FLEXDLL_VS_VERSION_INFO=$(FLEXDLL_VS_VERSION_INFO ) \
181
+ /d FLEXDLL_FULL_VERSION="$(FLEXDLL_FULL_VERSION ) "
182
+
183
+ # cf. https://sourceware.org/bugzilla/show_bug.cgi?id=27843
184
+ WINDRES_FLAGS = \
185
+ -D FLEXDLL_VS_VERSION_INFO=$(FLEXDLL_VS_VERSION_INFO ) \
186
+ -D FLEXDLL_FULL_VERSION=\\\"$(FLEXDLL_FULL_VERSION ) \\\"
187
+
188
+ version.res : version.rc flexdll.opam
189
+ $(RES_PREFIX ) rc /nologo $(RC_FLAGS ) $<
190
+
191
+ version_res.o : version.rc flexdll.opam
192
+ $(TOOLPREF ) windres $(WINDRES_FLAGS ) -i $< -o $@
168
193
169
194
flexdll_msvc.obj : flexdll.c flexdll.h
170
195
$(MSVC_PREFIX ) $(MSVCC ) /DMSVC -c /Fo" $@ " $<
@@ -239,7 +264,7 @@ package_src:
239
264
rm -Rf flexdll-$(VERSION )
240
265
mkdir flexdll-$(VERSION )
241
266
mkdir flexdll-$(VERSION ) /test
242
- cp -a $(filter-out version.ml,$(OBJS:Compat.ml=Compat.ml.in ) ) Makefile msvs-detect $(COMMON_FILES ) version.rc flexdll-$(VERSION ) /
267
+ cp -a $(filter-out version.ml,$(OBJS:Compat.ml=Compat.ml.in ) ) Makefile msvs-detect $(COMMON_FILES ) version.rc flexdll.install flexdll.opam flexdll -$(VERSION ) /
243
268
cp -aR test/Makefile test/* .c flexdll-$(VERSION ) /test/
244
269
tar czf $(PACKAGE ) flexdll-$(VERSION )
245
270
rm -Rf flexdll-$(VERSION )
0 commit comments