Skip to content

Commit d4841d2

Browse files
committed
Store the version number in one place
The VERSION macro in Makefile is now the single source of the version of FlexDLL. This is used when compiling version.rc. version.rc is corrected to adopt Windows version format, so the current release is rendered as 0.43.0.0 instead of 0.0.0.43. flexdll.opam is now the primary source for the version number for the package, and both version.ml and version.rc are compiled using the number taken from there.
1 parent 705cba6 commit d4841d2

4 files changed

Lines changed: 38 additions & 13 deletions

File tree

Makefile

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55
##
66

77

8-
VERSION = 0.43
8+
VERSION = \
9+
$(eval VERSION := $$(shell sed -ne 's/^version: *"\(.*\)"/\1/p' flexdll.opam))$(VERSION)
10+
911
all: flexlink.exe support
1012

1113
OCAML_CONFIG_FILE=$(shell cygpath -ad "$(shell ocamlopt -where 2>/dev/null)/Makefile.config" 2>/dev/null)
1214
include $(OCAML_CONFIG_FILE)
1315
OCAMLOPT=ocamlopt
1416
EMPTY=
1517
SPACE=$(EMPTY) $(EMPTY)
18+
COMMA=,
1619
OCAML_VERSION:=$(firstword $(subst ~, ,$(subst +, ,$(shell $(OCAMLOPT) -version 2>/dev/null))))
1720
ifeq ($(OCAML_VERSION),)
1821
OCAML_VERSION:=0
@@ -31,7 +34,7 @@ MIN64CC = $(MINGW64_PREFIX)gcc
3134
CYGWIN64_PREFIX = x86_64-pc-cygwin-
3235
CYG64CC = $(CYGWIN64_PREFIX)gcc
3336

34-
version.ml: Makefile
37+
version.ml: Makefile flexdll.opam
3538
echo "let version = \"$(VERSION)\"" > version.ml
3639
echo "let mingw_prefix = \"$(MINGW_PREFIX)\"" >> version.ml
3740
echo "let mingw64_prefix = \"$(MINGW64_PREFIX)\"" >> version.ml
@@ -160,11 +163,32 @@ flexlink.exe: $(OBJS) $(RES)
160163
rm -f $@
161164
$(RES_PREFIX) $(OCAMLOPT) -o $@ $(LINKFLAGS) $(OBJS)
162165

163-
version.res: version.rc
164-
$(RES_PREFIX) rc $<
165-
166-
version_res.o: version.rc
167-
$(TOOLPREF)windres -i $< -o $@
166+
# VERSION at present is x.y, but there would be no reason not to have x.y.z in
167+
# future. Windows versions have four components. $(FLEXDLL_FULL_VERSION) adds
168+
# additional .0s to the right of $(VERSION) such that $(FLEXDLL_FULL_VERSION)
169+
# has four version components.
170+
# Thus if VERSION=0.43, then FLEXDLL_FULL_VERSION=0.43.0.0
171+
# $(FLEXDLL_VS_VERSION_INFO) is the same value, but using a ',' to separate the
172+
# items rather than a '.', as this is the format used in a VS_VERSION_INFO block
173+
# in Resource Compiler format.
174+
FLEXDLL_FULL_VERSION = \
175+
$(subst $(SPACE),.,$(wordlist 1, 4, $(subst .,$(SPACE),$(VERSION)) 0 0 0))
176+
FLEXDLL_VS_VERSION_INFO = $(subst .,$(COMMA),$(FLEXDLL_FULL_VERSION))
177+
178+
RC_FLAGS = \
179+
/d FLEXDLL_VS_VERSION_INFO=$(FLEXDLL_VS_VERSION_INFO) \
180+
/d FLEXDLL_FULL_VERSION="$(FLEXDLL_FULL_VERSION)"
181+
182+
# cf. https://sourceware.org/bugzilla/show_bug.cgi?id=27843
183+
WINDRES_FLAGS = \
184+
-D FLEXDLL_VS_VERSION_INFO=$(FLEXDLL_VS_VERSION_INFO) \
185+
-D FLEXDLL_FULL_VERSION=\\\"$(FLEXDLL_FULL_VERSION)\\\"
186+
187+
version.res: version.rc flexdll.opam
188+
$(RES_PREFIX) rc /nologo $(RC_FLAGS) $<
189+
190+
version_res.o: version.rc flexdll.opam
191+
$(TOOLPREF)windres $(WINDRES_FLAGS) -i $< -o $@
168192

169193
flexdll_msvc.obj: flexdll.c flexdll.h
170194
$(MSVC_PREFIX) $(MSVCC) /DMSVC -c /Fo"$@" $<
@@ -239,7 +263,7 @@ package_src:
239263
rm -Rf flexdll-$(VERSION)
240264
mkdir flexdll-$(VERSION)
241265
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.install flexdll-$(VERSION)/
266+
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)/
243267
cp -aR test/Makefile test/*.c flexdll-$(VERSION)/test/
244268
tar czf $(PACKAGE) flexdll-$(VERSION)
245269
rm -Rf flexdll-$(VERSION)

appveyor_build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ if [ "$ARTEFACTS" = 'yes' ] ; then
211211

212212
make package_bin installer
213213
SUFFIX="$(git describe)"
214-
VERSION="$(sed -ne 's/^VERSION *= *//p' Makefile)"
214+
VERSION="$(sed -ne 's/^version: *"\(.*\)"/\1/p' flexdll.opam)"
215215
if [ "$SUFFIX" != "$VERSION" ] ; then
216216
mv "flexdll-bin-$VERSION.zip" "flexdll-bin-$SUFFIX.zip"
217217
mv "flexdll-$VERSION-setup.exe" "flexdll-$SUFFIX-setup.exe"

flexdll.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ share: [
88
"default_amd64.manifest"
99
"flexdll.c"
1010
"flexdll.h"
11+
"flexdll.opam"
1112
"flexdll_initer.c"
1213
"reloc.ml"
1314
"version.rc"

version.rc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
99
//
1010

1111
VS_VERSION_INFO VERSIONINFO
12-
FILEVERSION 0,0,0,43
13-
PRODUCTVERSION 0,0,0,43
12+
FILEVERSION FLEXDLL_VS_VERSION_INFO
13+
PRODUCTVERSION FLEXDLL_VS_VERSION_INFO
1414
FILEFLAGSMASK 0x3fL
1515
FILEFLAGS 0x0L
1616
FILEOS 0x40004L
@@ -21,8 +21,8 @@ BEGIN
2121
BEGIN
2222
BLOCK "040904b0"
2323
BEGIN
24-
VALUE "FileVersion", "0.0.0.43"
25-
VALUE "ProductVersion", "0.0.0.43"
24+
VALUE "FileVersion", FLEXDLL_FULL_VERSION
25+
VALUE "ProductVersion", FLEXDLL_FULL_VERSION
2626
VALUE "ProductName", "FlexDLL"
2727
VALUE "FileDescription", "FlexDLL Linker"
2828
VALUE "LegalCopyright", "Institut National de Recherche en Informatique et en Automatique"

0 commit comments

Comments
 (0)