Integrate FDBLibTLS into the FoundationDB build system.

This includes...
 * A minimal vcxproj file to list all the source files required for the build.
   Some future Visual Studio user can come along and replace it with a real
   actual vcxproj file with all the other metadata that I didn't bother to copy.
 * A local.mk file to specify all the custom flags and libraries we need for
   the build/link of the TLS plugin.
 * Including the project in the list of all FDB sub-projects
 * Fixes `make clean` to wipe all of lib/, including libFDBLibTLS.so

And offers a target of `bin/FDBLibTLS.so` that can be built, and I have
verified that it works with simulation.

Note that this requires a build image that contains the previous Dockerfile changes.
This commit is contained in:
Alex Miller 2018-04-12 12:59:51 -07:00
parent 5c65584aac
commit 5efd9fe3c4
3 changed files with 44 additions and 2 deletions

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|X64">
<Configuration>Debug</Configuration>
<Platform>X64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|X64">
<Configuration>Release</Configuration>
<Platform>X64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="FDBLibTLSPlugin.h" />
<ClCompile Include="FDBLibTLSPlugin.cpp" />
<ClInclude Include="FDBLibTLSPolicy.h" />
<ClCompile Include="FDBLibTLSPolicy.cpp" />
<ClInclude Include="FDBLibTLSSession.h" />
<ClCompile Include="FDBLibTLSSession.cpp" />
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset>
</PropertyGroup>
</Project>

11
FDBLibTLS/local.mk Normal file
View File

@ -0,0 +1,11 @@
FDBLibTLS_CFLAGS := -fPIC -I/usr/local/include -I$(BOOSTDIR)
FDBLibTLS_STATIC_LIBS := -ltls -lssl -lcrypto
FDBLibTLS_LDFLAGS := -L/usr/local/lib -static-libstdc++ -static-libgcc -lrt
FDBLibTLS_LDFLAGS += -Wl,-soname,FDBLibTLS.so -Wl,--version-script=FDBLibTLS/FDBLibTLS.map
# The plugin isn't a typical library, so it feels more sensible to have a copy
# of it in bin/.
bin/FDBLibTLS.$(DLEXT): lib/libFDBLibTLS.$(DLEXT)
@cp $< $@
TARGETS += bin/FDBLibTLS.$(DLEXT)

View File

@ -92,7 +92,7 @@ STATIC_LIBS :=
VPATH += $(addprefix :,$(filter-out lib,$(patsubst -L%,%,$(filter -L%,$(LDFLAGS)))))
CS_PROJECTS := flow/actorcompiler flow/coveragetool fdbclient/vexillographer
CPP_PROJECTS := flow fdbrpc fdbclient fdbbackup fdbserver fdbcli bindings/c bindings/java fdbmonitor bindings/flow/tester bindings/flow
CPP_PROJECTS := flow fdbrpc fdbclient fdbbackup fdbserver fdbcli bindings/c bindings/java fdbmonitor bindings/flow/tester bindings/flow FDBLibTLS
OTHER_PROJECTS := bindings/python bindings/ruby bindings/go
CS_MK_GENERATED := $(CS_PROJECTS:=/generated.mk)
@ -148,7 +148,7 @@ clean: $(CLEAN_TARGETS) docpreview_clean
@echo "Cleaning toplevel"
@rm -rf $(OBJDIR)
@rm -rf $(DEPSDIR)
@rm -rf lib/libstdc++.a
@rm -rf lib/
@rm -rf bin/coverage.*.xml
targets: