Skip to content

Commit a60821e

Browse files
authored
Merge pull request #135 from dra27/flexdll-source-packaging
opam package for flexdll sources
2 parents 88af99c + c5d59b5 commit a60821e

File tree

5 files changed

+64
-13
lines changed

5 files changed

+64
-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-$(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: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
share: [
2+
"Makefile"
3+
"cmdline.ml"
4+
"coff.ml"
5+
"Compat.ml.in"
6+
"create_dll.ml"
7+
"default.manifest"
8+
"default_amd64.manifest"
9+
"flexdll.c"
10+
"flexdll.h"
11+
"flexdll.opam"
12+
"flexdll_initer.c"
13+
"reloc.ml"
14+
"version.rc"
15+
]

flexdll.opam

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
opam-version: "2.0"
2+
version: "0.43"
3+
authors: "Alain Frisch"
4+
maintainer: "David Allsopp <[email protected]>"
5+
bug-reports: "https://github.com/ocaml/flexdll/issues"
6+
dev-repo: "git+https://github.com/ocaml/flexdll.git"
7+
homepage: "https://github.com/ocaml/flexdll#readme"
8+
license: "Zlib"
9+
synopsis: "FlexDLL Sources"
10+
description: "Source package for FlexDLL. Installs the required files for
11+
bootstrapping FlexDLL as part of an OCaml build."

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)