3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-12 06:00:53 +00:00
Commit graph

7 commits

Author SHA1 Message Date
Dan Liew
4b517b96df [CMake] Move CMake files into their intended location so the
`contrib/cmake/bootstrap.py` script no longer needs to be executed.

The previous location of the CMake files was a compromise proposed
by @agurfinkel in #461. While this has served us well (allowing progress
to be made) over time limitations of this approach have appeared.

The main problem is that doing many git operations (e.g. pull, rebase)
means the CMake files don't get updated unless the user remembers to
run the script. This can lead to broken and confusing build system
behaviour.

This commit only does the file moving and necessary changes to
`.gitignore`. Other changes will be done in subsequent commits.
2017-06-12 11:59:00 +01:00
Dan Liew
462d3e8e8b [CMake] Unbreak building the .NET bindings.
7fefe40f21 broke building the .NET
bindings by renaming the signing key without updating the CMake build.
2016-10-17 18:19:31 +01:00
Dan Liew
626e0736d2 [CMake] Implement installation of ".NET" bindings on Windows.
We don't install Z3_DOTNET_ASSEMBLY_DLL into the gac. Instead we just copy into
installation directory.

There are several reasons for this:

* We can't install the Z3_DOTNET_ASSEMBLY_DLL into the gac in a portable
  way like we can with mono (i.e. the ``-root`` flag).
* It isn't best practice to use ``gacutil.exe``
  on Windows to install into the GAC, see
  https://msdn.microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx .

Taking this approach should be sufficient because we can now do
something like this

```
mkdir build
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=<some_path> ../
ninja
mkdir <some_path>
ninja install
```

and then put the contents of <some_path> into a zip file which creates a redistributable zip file for Windows.
2016-04-26 11:24:16 +01:00
Dan Liew
7213280d9b [CMake] Emit a warning when configuring to build the `.NET` bindings under
a multi-configuration generator (e.g. Visual Studio).

The warning concerns different generated files clobbering each other.
Unfortunately there isn't a clean way to fix this right now. See
http://public.kitware.com/pipermail/cmake/2016-March/063101.html
2016-04-26 08:56:46 +01:00
Dan Liew
7cedf79b38 [CMake] When building the ".NET" bindings emit `Microsoft.Z3.dll`
and ``Microsoft.Z3.xml`` to the root build directory rather than
``<root_build_directory>/src/api/dotnet``.

This fixes #573 which makes the behaviour consistent with the Python
build system.
2016-04-26 08:56:25 +01:00
Dan Liew
cc12b1ebce [CMake] The bug in mono that causes the `gacutil` utility to crash if
the assembly was compiled with ``/platform:x64`` has now been reported
so update the comments to reflect this.
2016-03-28 23:10:23 +01:00
Dan Liew
20d3bf4d0c [CMake] Implement support for building the .NET bindings.
When using Mono support for installing/uninstalling the bindings
is also implemented. For Windows install/uninstall is not implemented
because the python build system does not implement it and Microsoft's
documentation (https://msdn.microsoft.com/en-us/library/dkkx7f79.aspx)
says that the gacutil should only be used for development and not for
production.

For now a warning is just emitted if ``INSTALL_DOTNET_BINDINGS``
is enabled and the .NET toolchain is native Windows. Someone with
better knowledge of how to correctly install assemblies under Windows
should implement this or remove this message.

A notable difference from the Python build system is the
``/linkresource:`` flag is not passed to the C# compiler. This means
a user of the .NET bindings will have to copy the Z3 library (i.e.
``libz3.dll``) to their application directory manually. The reason
for this difference is that using this flag requires the working
directory to be the directory containing the Z3 library (i.e.
``libz3.dll``) but setting this up with multi-configuration generators
doesn't currently seem possible.
2016-03-27 15:04:04 +01:00