Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
c
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Iris
c
Commits
3eafac63
Commit
3eafac63
authored
Feb 28, 2019
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Makefile.
parent
f63644b9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
49 deletions
+13
-49
Makefile
Makefile
+13
-14
awk.Makefile
awk.Makefile
+0
-35
No files found.
Makefile
View file @
3eafac63
...
...
@@ -8,19 +8,17 @@ all: Makefile.coq
clean
:
Makefile.coq
+@make
-f
Makefile.coq clean
find theories
\(
-name
"*.v.d"
-o
-name
"*.vo"
-o
-name
"*.aux"
-o
-name
"*.cache"
-o
-name
"*.glob"
-o
-name
"*.vio"
\)
-print
-delet
e
find theories
tests
\(
-name
"*.d"
-o
-name
"*.vo"
-o
-name
"*.aux"
-o
-name
"*.cache"
-o
-name
"*.glob"
-o
-name
"*.vio"
\)
-print
-delete
||
tru
e
rm
-f
Makefile.coq
.PHONY
:
clean
# Create Coq Makefile. POSIX awk can't do in-place editing, but coq_makefile wants the real
# filename, so we do some file gymnastics.
Makefile.coq
:
_CoqProject Makefile awk.Makefile
# Create Coq Makefile.
Makefile.coq
:
_CoqProject Makefile
"
$(COQBIN)
coq_makefile"
-f
_CoqProject
-o
Makefile.coq
mv
Makefile.coq Makefile.coq.tmp
&&
awk
-f
awk.Makefile Makefile.coq.tmp
>
Makefile.coq
&&
rm
Makefile.coq.tmp
# Install build-dependencies
build-dep/opam
:
opam Makefile
# Creating the build-dep package.
@
echo
"# Creating build-dep package."
@
mkdir
-p
build-dep
@
sed
<opam
-E
's/^(build|install|remove):.*/\1: []/; s/^name: *"(.*)" */name: "\1-builddep"/'
>
build-dep/opam
@
fgrep builddep build-dep/opam
>
/dev/null
||
(
echo
"sed failed to fix the package name"
&&
exit
1
)
# sanity check
...
...
@@ -30,18 +28,19 @@ build-dep: build-dep/opam phony
@
# constraints. Otherwise, `opam upgrade` may well update some packages to versions
@
# that are incompatible with our build requirements.
@
# To achieve this, we create a fake opam package that has our build-dependencies as
@
# dependencies, but does not actually install anything.
@
# Upgrading is needed in case the pin already exists, but the builddep package changed.
@
BUILD_DEP_PACKAGE
=
"
$$
(egrep "
^name:
" build-dep/opam | sed 's/^name: *"
\(
.
*
\)
" */
\1
/')"
;
\
echo
"# Pinning build-dep package."
&&
\
opam pin add
-k
path
$(OPAMFLAGS)
"
$$
BUILD_DEP_PACKAGE"
.dev build-dep
&&
\
echo
"# Updating build-dep package."
&&
\
opam upgrade
"
$$
BUILD_DEP_PACKAGE"
@
# dependencies, but does not actually install anything itself.
@
echo
"# Pinning build-dep package."
&&
\
if
opam
--version
|
grep
"^1
\.
"
-q
;
then
\
BUILD_DEP_PACKAGE
=
"
$$
(egrep "
^name:
" build-dep/opam | sed 's/^name: *"
\(
.
*
\)
" */
\1
/')"
&&
\
opam pin add
-k
path
$(OPAMFLAGS)
"
$$
BUILD_DEP_PACKAGE"
.dev build-dep
&&
\
opam reinstall
$(OPAMFLAGS)
"
$$
BUILD_DEP_PACKAGE"
;
\
else
\
opam
install
$(OPAMFLAGS)
build-dep/
;
\
fi
# Some files that do *not* need to be forwarded to Makefile.coq
Makefile
:
;
_CoqProject
:
;
awk.Makefile
:
;
opam
:
;
# Phony wildcard targets
...
...
awk.Makefile
deleted
100644 → 0
View file @
f63644b9
# awk program that patches the Makefile generated by Coq.
# Detect the name this project will be installed under.
/\$\(COQLIBINSTALL\)\/.*\/\$\$i/ {
# Wow, POSIX awk is really broken. I mean, isn't it supposed to be a text processing language?
# And there is not even a way to access the matched groups of a regexp...?!? Lucky enough,
# we can just split the string at '/' here.
split($0, PIECES, /\//);
PROJECT=PIECES[2];
}
# Patch the uninstall target to work properly, and to also uninstall stale files.
# Also see <https://coq.inria.fr/bugs/show_bug.cgi?id=4907>.
# This (and the section above) can be removed once we no longer support Coq 8.6.
/^uninstall: / {
print "uninstall:";
print "\tif [ -d \"$(DSTROOT)\"$(COQLIBINSTALL)/"PROJECT"/ ]; then find \"$(DSTROOT)\"$(COQLIBINSTALL)/"PROJECT"/ \\( -name \"*.vo\" -o -name \"*.v\" -o -name \"*.glob\" -o \\( -type d -empty \\) \\) -print -delete; fi";
getline;
next
}
# Add new target quick2vo to (a) run "make quick" with the same number of jobs, ensuring
# that the .vio files are up-to-date, and (b) only schedule vio2vo for those
# files where the .vo is *older* than the .vio.
/^vio2vo:/ {
print "quick2vo:";
print "\t@make -j $(J) quick"
print "\t@VIOFILES=$$(for vofile in $(VOFILES); do viofile=\"$$(echo \"$$vofile\" | sed \"s/\\.vo/.vio/\")\"; if [ \"$$vofile\" -ot \"$$viofile\" -o ! -e \"$$vofile\" ]; then echo -n \"$$viofile \"; fi; done); \\"
print "\t echo \"VIO2VO: $$VIOFILES\"; \\"
print "\t if [ -n \"$$VIOFILES\" ]; then $(TIMER) $(COQC) $(COQDEBUG) $(COQFLAGS) -schedule-vio2vo $(J) $$VIOFILES; fi"
print ".PHONY: quick2vo"
}
# This forwards all unchanged lines
1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment