Skip to content

Commit

Permalink
Merge remote-tracking branch 'ldc-developers/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
thewilsonator committed Jul 29, 2017
2 parents 3231ba7 + 6b7a125 commit 25fbe68
Show file tree
Hide file tree
Showing 226 changed files with 8,152 additions and 4,240 deletions.
18 changes: 6 additions & 12 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
add-apt-repository -y 'deb http://apt.llvm.org/unstable/ llvm-toolchain main'
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
apt update
apt install -y llvm-5.0 llvm-5.0-dev
apt install -y llvm-5.0 llvm-5.0-dev libclang-common-5.0-dev libfuzzer-5.0-dev
- restore_cache:
key: host-ldc-{{ .Environment.HOST_LDC_VERSION }}
- run:
Expand All @@ -55,27 +55,21 @@ jobs:
bin/ldc2 -version
cd ..
- run:
name: Build LDC
name: Build LDC and stdlib unittest runners
command: |
export HOST_LDMD=$PWD/bootstrap/bin/ldmd2
mkdir build
cd build
cmake -G Ninja -DLDC_INSTALL_LTOPLUGIN=ON -DD_COMPILER=$HOST_LDMD ..
ninja -j3
cmake -G Ninja -DLDC_INSTALL_LTOPLUGIN=ON -DLDC_INSTALL_LLVM_RUNTIME_LIBS=ON -DD_COMPILER=$HOST_LDMD ..
ninja -j3 all all-test-runners
bin/ldc2 -version
cd ..
- run:
name: Compile stdlib unittests
command: |
cd build
ninja -j3 phobos2-ldc-unittest-debug phobos2-ldc-unittest druntime-ldc-unittest-debug druntime-ldc-unittest
ninja -j3 phobos2-ldc-unittest-debug-shared phobos2-ldc-unittest-shared druntime-ldc-unittest-debug-shared druntime-ldc-unittest-shared
- run:
name: Run LDC unittests
name: Build and run LDC D unittests
command: cd build && ctest --output-on-failure -R ldc2-unittest
when: always
- run:
name: Run LIT tests
name: Run LIT testsuite
command: cd build && ctest -V -R lit-tests
when: always
- run:
Expand Down
29 changes: 8 additions & 21 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,16 @@ matrix:
include:
- os: linux
d: ldc
env: LLVM_VERSION=4.0.1
env: LLVM_VERSION=4.0.1 OPTS="-DLIB_SUFFIX=64"
- os: linux
d: ldc-beta
env: LLVM_VERSION=3.9.1 OPTS="-DLIB_SUFFIX=64"
- os: linux
d: ldc
env: LLVM_VERSION=3.8.1 OPTS="-DBUILD_SHARED_LIBS=ON"
- os: linux
d: ldc
env: LLVM_VERSION=3.7.1 OPTS="-DBUILD_SHARED_LIBS=OFF -DLIB_SUFFIX=64"
env: LLVM_VERSION=3.9.1 OPTS="-DBUILD_SHARED_LIBS=ON"
- os: linux
d: ldc-0.17.2
env: LLVM_VERSION=3.6.2
env: LLVM_VERSION=3.8.1 OPTS="-DBUILD_SHARED_LIBS=OFF -DLIB_SUFFIX=64"
- os: linux
d: dmd
env: LLVM_VERSION=3.5.2 OPTS="-DTEST_COVERAGE=ON"
env: LLVM_VERSION=3.7.1 OPTS="-DTEST_COVERAGE=ON"
- os: osx
d: ldc-beta
env: LLVM_VERSION=5.0.0-3 OPTS="-DBUILD_SHARED_LIBS=OFF" LLVM_SPIRV_AVAILABLE=ON
Expand All @@ -39,8 +33,6 @@ cache:
- llvm-3.9.1
- llvm-3.8.1
- llvm-3.7.1
- llvm-3.6.2
- llvm-3.5.2
addons:
apt:
sources:
Expand Down Expand Up @@ -91,24 +83,19 @@ install:
- eval "${DC} --version"

script:
- cmake -G Ninja -DLLVM_CONFIG=$(which ${LLVM_CONFIG}) $OPTS .
- ninja -j3
- cmake -G Ninja -DLLVM_CONFIG=$(which ${LLVM_CONFIG}) -DLDC_INSTALL_LLVM_RUNTIME_LIBS=ON $OPTS .
# Build LDC and stdlib unittest runners.
- ninja -j3 all all-test-runners
# Output some environment info, plus make sure we only run the test suite
# if we could actually build the executable.
- bin/ldc2 -version || exit 1
# Build Phobos & druntime unittest modules.
- ninja -j3 phobos2-ldc-unittest-debug phobos2-ldc-unittest druntime-ldc-unittest-debug druntime-ldc-unittest
-
if [[ ! "${OPTS}" == *-DBUILD_SHARED_LIBS* ]]; then
ninja -j3 phobos2-ldc-unittest-debug-shared phobos2-ldc-unittest-shared druntime-ldc-unittest-debug-shared druntime-ldc-unittest-shared;
fi
# Build and run LDC D unittests.
- ctest --output-on-failure -R "ldc2-unittest"
# Run LIT testsuite.
- ctest -V -R "lit-tests"
# Run DMD testsuite.
- DMD_TESTSUITE_MAKE_ARGS=-j3 ctest -V -R "dmd-testsuite"
# Link and run Phobos & druntime unittest runners.
# Run stdlib unittests.
- ctest -j3 --output-on-failure -E "dmd-testsuite|lit-tests|ldc2-unittest"

after_success:
Expand Down
78 changes: 62 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ endif()
# Locate LLVM.
#

find_package(LLVM 3.5 REQUIRED
find_package(LLVM 3.7 REQUIRED
all-targets analysis asmparser asmprinter bitreader bitwriter codegen core debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb globalisel instcombine ipa ipo instrumentation irreader libdriver linker lto mc mcdisassembler mcparser objcarcopts object option profiledata scalaropts selectiondag support tablegen target transformutils vectorize ${EXTRA_LLVM_MODULES})
math(EXPR LDC_LLVM_VER ${LLVM_VERSION_MAJOR}*100+${LLVM_VERSION_MINOR})
# Remove LLVMTableGen library from list of libraries
Expand Down Expand Up @@ -55,8 +55,8 @@ endfunction()
set(LDC_VERSION "1.4.0") # May be overridden by git hash tag
set(DMDFE_MAJOR_VERSION 2)
set(DMDFE_MINOR_VERSION 0)
set(DMDFE_PATCH_VERSION 73)
set(DMDFE_FIX_LEVEL 2) # Comment out if not used
set(DMDFE_PATCH_VERSION 74)
set(DMDFE_FIX_LEVEL 1) # Comment out if not used

set(DMD_VERSION ${DMDFE_MAJOR_VERSION}.${DMDFE_MINOR_VERSION}${DMDFE_PATCH_VERSION})
if(DEFINED DMDFE_FIX_LEVEL)
Expand Down Expand Up @@ -269,15 +269,15 @@ endmacro()
#
# Build idgen.
#
build_idgen(${DDMDFE_PATH}/idgen.d ${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/idgen${CMAKE_EXECUTABLE_SUFFIX} ${DDMD_DFLAGS} "" "")
build_idgen(${DDMDFE_PATH}/idgen.d ${PROJECT_BINARY_DIR}/idgen${CMAKE_EXECUTABLE_SUFFIX} ${DDMD_DFLAGS} "" "")
# Run idgen.
add_custom_command(
OUTPUT
${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/id.d
${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/id.h
COMMAND ${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/idgen #provide full path to avoid clash with idgen on path
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${DDMDFE_PATH}
DEPENDS ${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/idgen${CMAKE_EXECUTABLE_SUFFIX}
COMMAND ${PROJECT_BINARY_DIR}/idgen #provide full path to avoid clash with idgen on path
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
DEPENDS ${PROJECT_BINARY_DIR}/idgen${CMAKE_EXECUTABLE_SUFFIX}
)
set(LDC_CXX_GENERATED
${PROJECT_BINARY_DIR}/${DDMDFE_PATH}/id.h
Expand Down Expand Up @@ -405,15 +405,11 @@ source_group("Generated Files" REGULAR_EXPRESSION "(id\\.[cdh]|impcnvtab\\.c)$")
include(HandleLTOPGOBuildOptions)

#
# Enable PGO if supported for this platform and LLVM version.
# LLVM >= 3.7 is required for PGO.
# Enable PGO if supported for this platform.
#
set(LDC_WITH_PGO False) # must be a valid Python boolean constant (case sensitive)
if (NOT (LDC_LLVM_VER LESS 307))
message(STATUS "Building LDC with PGO support")
append("-DLDC_WITH_PGO" LDC_CXXFLAGS)
set(LDC_WITH_PGO True)
endif()
set(LDC_WITH_PGO True) # must be a valid Python boolean constant (case sensitive)
message(STATUS "Building LDC with PGO support")
append("-DLDC_WITH_PGO" LDC_CXXFLAGS)

#
# Includes, defines.
Expand Down Expand Up @@ -708,7 +704,7 @@ build_d_executable(
"${LDMD_D_SOURCE_FILES}"
"$<TARGET_LINKER_FILE:LDMD_CXX_LIB>"
"${LDMD_D_SOURCE_FILES}"
"LDMD_CXX_LIB;${LDC_LIB}"
"LDMD_CXX_LIB"
)

#
Expand All @@ -732,6 +728,53 @@ if (NOT (LDC_LLVM_VER LESS 309) AND LDC_INSTALL_LTOPLUGIN)
message(STATUS "Also installing LTO binary: ${LLVM_LTO_BINARY}")
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
configure_file(${LLVM_LTO_BINARY} ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/${LDC_LTO_BINARY_NAME} COPYONLY)
else()
message(STATUS "Not found: ${LLVM_LTO_BINARY}")
endif()
endif()

#
# Locate ASan and other runtime libraries, and copy them to our lib folder
# Location is LLVM_LIBRARY_DIRS/clang/<version>/lib/<OS>/ , for example LLVM_LIBRARY_DIRS/clang/4.0.0/lib/darwin/
#
if(APPLE)
set(LDC_INSTALL_LLVM_RUNTIME_LIBS_DEFAULT ON)
else()
set(LDC_INSTALL_LLVM_RUNTIME_LIBS_DEFAULT OFF)
endif()
set(LDC_INSTALL_LLVM_RUNTIME_LIBS ${LDC_INSTALL_LLVM_RUNTIME_LIBS_DEFAULT} CACHE BOOL "Copy/install runtime libraries (ASan, libFuzzer) from LLVM/Clang into LDC lib dir when available.")
function(copy_compilerrt_lib llvm_lib_name ldc_lib_name fixup_dylib)
# The LLVM version string can contain the SVN revision number, so cut that off
string(SUBSTRING "${LLVM_VERSION_STRING}" 0 5 LLVM_VERSION_STRING_CROPPED)
set(llvm_lib_path ${LLVM_LIBRARY_DIRS}/clang/${LLVM_VERSION_STRING_CROPPED}/lib/${llvm_lib_name})
if(EXISTS ${llvm_lib_path})
message(STATUS "Copying runtime library: ${llvm_lib_path} --> ${ldc_lib_name}")
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
configure_file(${llvm_lib_path} ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/${ldc_lib_name} COPYONLY)
if (fixup_dylib)
execute_process(COMMAND install_name_tool -id @rpath/${ldc_lib_name} ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/${ldc_lib_name})
endif()
install(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/${ldc_lib_name} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
else()
message(STATUS "Not found: ${llvm_lib_path}")
endif()
endfunction()
if (LDC_INSTALL_LLVM_RUNTIME_LIBS)
if(APPLE)
copy_compilerrt_lib("darwin/libclang_rt.asan_osx_dynamic.dylib" "libldc_rt.asan_osx_dynamic.dylib" TRUE)
elseif(UNIX)
copy_compilerrt_lib("linux/libclang_rt.asan-x86_64.a" "libldc_rt.asan-x86_64.a" FALSE)
endif()

# Locate libFuzzer runtime library, and copy it to our lib folder
set(LLVM_LIBFUZZER_PATH ${LLVM_LIBRARY_DIRS}/libFuzzer.a)
if(EXISTS ${LLVM_LIBFUZZER_PATH})
message(STATUS "Copying libFuzzer library: ${LLVM_LIBFUZZER_PATH} --> libFuzzer.a")
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
configure_file(${LLVM_LIBFUZZER_PATH} ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libFuzzer.a COPYONLY)
install(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libFuzzer.a DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
else()
message(STATUS "Not found: ${LLVM_LIBFUZZER_PATH}")
endif()
endif()

Expand Down Expand Up @@ -776,6 +819,9 @@ add_subdirectory(tests)

install(PROGRAMS ${LDC_EXE_FULL} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install(PROGRAMS ${LDMD_EXE_FULL} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
install(PROGRAMS ${PROJECT_BINARY_DIR}/bin/build-ldc-runtime.sh DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif()
if(${BUILD_SHARED})
# For now, only install libldc if explicitly building the shared library.
# While it might theoretically be possible to use LDC as a static library
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ libraries is available on the project wiki for
[Linux and OS X](http://wiki.dlang.org/Building_LDC_from_source) and
[Windows](http://wiki.dlang.org/Building_and_hacking_LDC_on_Windows_using_MSVC).

If you have a working C++ build environment, CMake, and a current LLVM (≥ 3.5)
If you have a working C++ build environment, CMake, and a current LLVM (≥ 3.7)
available, there should be no big surprises.
Building LDC also requires a working D compiler, DMD and LDC are supported.
(LDC 0.17 is the last version that does not need a D compiler,
Expand Down
26 changes: 10 additions & 16 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ install:
# Download & extract a pre-built LLVM (CMAKE_BUILD_TYPE=Release, LLVM_ENABLE_ASSERTIONS=ON)
- ps: |
If ($Env:APPVEYOR_JOB_ARCH -eq 'x64') {
appveyor DownloadFile 'https://dl.dropboxusercontent.com/s/phhwfs01jpcx74l/LLVM-3.9.1-x64-MT.7z?dl=0' -FileName llvm-x64.7z
appveyor DownloadFile 'https://dl.dropboxusercontent.com/s/nxw73qdy4dqs23p/LLVM-4.0.1-x64.7z?dl=0' -FileName llvm-x64.7z
} Else {
appveyor DownloadFile 'https://dl.dropboxusercontent.com/s/cx5k09yablneyv3/LLVM-3.9.1-x86-MT.7z?dl=0' -FileName llvm-x86.7z
appveyor DownloadFile 'https://dl.dropboxusercontent.com/s/probihgpillkpuk/LLVM-4.0.1-x86.7z?dl=0' -FileName llvm-x86.7z
}
- md llvm-%APPVEYOR_JOB_ARCH%
- cd llvm-%APPVEYOR_JOB_ARCH%
Expand Down Expand Up @@ -120,8 +120,8 @@ build_script:
- cd ninja-ldc
- if "%APPVEYOR_JOB_ARCH%"=="x64" ( cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=c:\projects\ldc-x64 -DLLVM_ROOT_DIR=c:/projects/llvm-x64 ..\ldc )
- if "%APPVEYOR_JOB_ARCH%"=="x86" ( cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=c:\projects\ldc-x86 -DLLVM_ROOT_DIR=c:/projects/llvm-x86 ..\ldc )
# Build LDC, druntime and phobos
- ninja -j2
# Build LDC and stdlib unittest runners
- ninja -j2 all all-test-runners

after_build:
# install LDC, compress & publish as artifact
Expand Down Expand Up @@ -179,21 +179,15 @@ after_build:
test_script:
- cd c:\projects\ninja-ldc
- bin\ldc2 -version
# Compile, link & execute a hello-world program
- ps: 'echo "import std.stdio; void main() { writeln(""Hello world!""); }" > hello.d'
- bin\ldc2 hello.d
- hello.exe
# Compile the druntime & phobos unit tests
- ninja -j2 druntime-ldc-unittest-debug phobos2-ldc-unittest-debug druntime-ldc-unittest phobos2-ldc-unittest
# Run dmd-testsuite
# Build and run LDC D unittests
- ctest --output-on-failure -R "ldc2-unittest"
# Run LIT testsuite
- ctest -V -R "lit-tests"
# Run DMD testsuite
- if "%APPVEYOR_JOB_ARCH%"=="x64" ( set OS=Win_64) else ( set OS=Win_32)
- set DMD_TESTSUITE_MAKE_ARGS=-j2
- ctest -V -R "dmd-testsuite"
# Run lit testsuite
- ctest -V -R "lit-tests"
# Build and run LDC D unittests
- ctest --output-on-failure -R "ldc2-unittest"
# Link and run Phobos & druntime unittest runners
# Run stdlib unittests
- ctest -j2 --output-on-failure -E "dmd-testsuite|lit-tests|ldc2-unittest"

#---------------------------------#
Expand Down
34 changes: 4 additions & 30 deletions cmake/Modules/FindLLVM.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ set(llvm_config_names llvm-config-5.0 llvm-config50
llvm-config-3.9 llvm-config39
llvm-config-3.8 llvm-config38
llvm-config-3.7 llvm-config37
llvm-config-3.6 llvm-config36
llvm-config-3.5 llvm-config35
llvm-config)
find_program(LLVM_CONFIG
NAMES ${llvm_config_names}
Expand Down Expand Up @@ -85,13 +83,6 @@ if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
if(TARGET_AMDGPU GREATER -1)
list(APPEND LLVM_FIND_COMPONENTS AMDGPUUtils)
endif()
if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-6][\\.0-9A-Za-z]*")
# Versions below 3.7 do not support components debuginfo[dwarf|pdb]
# Only debuginfo is available
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfodwarf" index)
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfopdb" index)
list(APPEND LLVM_FIND_COMPONENTS "debuginfo")
endif()
if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-8][\\.0-9A-Za-z]*")
# Versions below 3.9 do not support components debuginfocodeview, globalisel
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfocodeview" index)
Expand All @@ -105,10 +96,6 @@ if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
# Versions below 4.0 do not support component debuginfomsf
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfomsf" index)
endif()
if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-6][\\.0-9A-Za-z]*")
# Versions below 3.7 do not support component libdriver
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "libdriver" index)
endif()

llvm_map_components_to_libnames(tmplibs ${LLVM_FIND_COMPONENTS})
if(MSVC)
Expand Down Expand Up @@ -182,13 +169,6 @@ else()
llvm_set(ROOT_DIR prefix true)
llvm_set(ENABLE_ASSERTIONS assertion-mode)

if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-6][\\.0-9A-Za-z]*")
# Versions below 3.7 do not support components debuginfo[dwarf|pdb]
# Only debuginfo is available
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfodwarf" index)
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfopdb" index)
list(APPEND LLVM_FIND_COMPONENTS "debuginfo")
endif()
if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-8][\\.0-9A-Za-z]*")
# Versions below 3.9 do not support components debuginfocodeview, globalisel
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfocodeview" index)
Expand All @@ -202,18 +182,12 @@ else()
# Versions below 4.0 do not support component debuginfomsf
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfomsf" index)
endif()
if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-6][\\.0-9A-Za-z]*")
# Versions below 3.7 do not support component libdriver
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "libdriver" index)
endif()

llvm_set(LDFLAGS ldflags)
if(NOT ${LLVM_VERSION_STRING} MATCHES "^3\\.[0-4][\\.0-9A-Za-z]*")
# In LLVM 3.5+, the system library dependencies (e.g. "-lz") are accessed
# using the separate "--system-libs" flag.
llvm_set(SYSTEM_LIBS system-libs)
string(REPLACE "\n" " " LLVM_LDFLAGS "${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBS}")
endif()
# In LLVM 3.5+, the system library dependencies (e.g. "-lz") are accessed
# using the separate "--system-libs" flag.
llvm_set(SYSTEM_LIBS system-libs)
string(REPLACE "\n" " " LLVM_LDFLAGS "${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBS}")
llvm_set(LIBRARY_DIRS libdir true)
llvm_set_libs(LIBRARIES libs)
# LLVM bug: llvm-config --libs tablegen returns -lLLVM-3.8.0
Expand Down
2 changes: 1 addition & 1 deletion ddmd/access.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Compiler implementation of the
* $(LINK2 http://www.dlang.org, D programming language).
*
* Copyright: Copyright (c) 1999-2016 by Digital Mars, All Rights Reserved
* Copyright: Copyright (c) 1999-2017 by Digital Mars, All Rights Reserved
* Authors: $(LINK2 http://www.digitalmars.com, Walter Bright)
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DMDSRC _access.d)
Expand Down
Loading

0 comments on commit 25fbe68

Please sign in to comment.