Skip to content

Commit c5d59b5

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 62f20c3 commit c5d59b5

File tree

4 files changed

+39
-13
lines changed

4 files changed

+39
-13
lines changed

Makefile

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

77

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+
912
all: flexlink.exe support
1013

1114
OCAML_CONFIG_FILE=$(shell cygpath -ad "$(shell ocamlopt -where 2>/dev/null)/Makefile.config" 2>/dev/null)
1215
include $(OCAML_CONFIG_FILE)
1316
OCAMLOPT=ocamlopt
1417
EMPTY=
1518
SPACE=$(EMPTY) $(EMPTY)
19+
COMMA=,
1620
OCAML_VERSION:=$(firstword $(subst ~, ,$(subst +, ,$(shell $(OCAMLOPT) -version 2>/dev/null))))
1721
ifeq ($(OCAML_VERSION),)
1822
OCAML_VERSION:=0
@@ -31,7 +35,7 @@ MIN64CC = $(MINGW64_PREFIX)gcc
3135
CYGWIN64_PREFIX = x86_64-pc-cygwin-
3236
CYG64CC = $(CYGWIN64_PREFIX)gcc
3337

34-
version.ml: Makefile
38+
version.ml: Makefile flexdll.opam
3539
echo "let version = \"$(VERSION)\"" > version.ml
3640
echo "let mingw_prefix = \"$(MINGW_PREFIX)\"" >> version.ml
3741
echo "let mingw64_prefix = \"$(MINGW64_PREFIX)\"" >> version.ml
@@ -160,11 +164,32 @@ flexlink.exe: $(OBJS) $(RES)
160164
rm -f $@
161165
$(RES_PREFIX) $(OCAMLOPT) -o $@ $(LINKFLAGS) $(OBJS)
162166

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 $@
168193

169194
flexdll_msvc.obj: flexdll.c flexdll.h
170195
$(MSVC_PREFIX) $(MSVCC) /DMSVC -c /Fo"$@" $<
@@ -239,7 +264,7 @@ package_src:
239264
rm -Rf flexdll-$(VERSION)
240265
mkdir flexdll-$(VERSION)
241266
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)/
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)/
243268
cp -aR test/Makefile test/*.c flexdll-$(VERSION)/test/
244269
tar czf $(PACKAGE) flexdll-$(VERSION)
245270
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)