Skip to content

Commit 49a5098

Browse files
committed
build: update for cmark build revamp and split the build
Extricate cmark from the unified build system. This is preparatory work to support building CMark GFM with dynamic linkage for sharing it across swift-markdown and the compiler. It also simplifies the build logic for the unified build.
1 parent d0344e5 commit 49a5098

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,11 +784,17 @@ if (CMAKE_Swift_COMPILER)
784784
else()
785785
message(STATUS "Swift Compiler (None).")
786786
endif()
787+
788+
set(THREADS_PREFER_PTHREAD_FLAG YES)
789+
include(FindThreads)
790+
787791
if(SWIFT_PATH_TO_CMARK_BUILD)
788792
execute_process(COMMAND ${SWIFT_PATH_TO_CMARK_BUILD}/src/cmark --version
789793
OUTPUT_VARIABLE _CMARK_VERSION
790794
OUTPUT_STRIP_TRAILING_WHITESPACE)
791795
message(STATUS "CMark Version: ${_CMARK_VERSION}")
796+
elseif(SWIFT_INCLUDE_TOOLS)
797+
find_package(cmark-gfm CONFIG REQUIRED)
792798
endif()
793799
message(STATUS "")
794800

cmake/modules/SwiftSharedCMakeConfig.cmake

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -278,24 +278,6 @@ macro(swift_common_unified_build_config product)
278278

279279
include_directories(${CLANG_INCLUDE_DIRS})
280280

281-
# If cmark was checked out into tools/cmark, expect to build it as
282-
# part of the unified build.
283-
if(EXISTS "${LLVM_EXTERNAL_CMARK_SOURCE_DIR}")
284-
set(${product}_PATH_TO_CMARK_SOURCE "${LLVM_EXTERNAL_CMARK_SOURCE_DIR}")
285-
set(${product}_PATH_TO_CMARK_BUILD "${CMAKE_BINARY_DIR}/tools/cmark")
286-
set(${product}_CMARK_LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib")
287-
288-
get_filename_component(CMARK_MAIN_SRC_DIR "${${product}_PATH_TO_CMARK_SOURCE}"
289-
ABSOLUTE)
290-
get_filename_component(PATH_TO_CMARK_BUILD "${${product}_PATH_TO_CMARK_BUILD}"
291-
ABSOLUTE)
292-
get_filename_component(CMARK_LIBRARY_DIR "${${product}_CMARK_LIBRARY_DIR}"
293-
ABSOLUTE)
294-
295-
include_directories(${PATH_TO_CMARK_BUILD}/src
296-
${CMARK_MAIN_SRC_DIR}/src/include)
297-
endif()
298-
299281
include(AddSwiftTableGen) # This imports TableGen from LLVM.
300282
endmacro()
301283

lib/Markup/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,4 @@ add_swift_host_library(swiftMarkup STATIC
33
LineList.cpp
44
Markup.cpp)
55
target_link_libraries(swiftMarkup PRIVATE
6-
libcmark-gfm_static)
7-
target_compile_definitions(swiftMarkup
8-
PRIVATE
9-
CMARK_GFM_STATIC_DEFINE)
10-
6+
libcmark-gfm)

utils/build.ps1

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,22 @@ function Build-WiXProject() {
843843
Invoke-Program $msbuild @MSBuildArgs
844844
}
845845

846+
function Build-CMark($Arch) {
847+
$ArchName = $Arch.ShortName
848+
849+
Build-CMakeProject `
850+
-Src $SourceCache\cmark `
851+
-Bin "$($Arch.BinaryCache)\cmark-gfm-0.29.0.gfm.13" `
852+
-InstallTo "$LibraryRoot\cmark-0.29.0.gfm.13\usr" `
853+
-Arch $Arch `
854+
-BuildTargets default `
855+
-Defines @{
856+
BUILD_SHARED_LIBS = "NO";
857+
BUILD_TESTING = "NO";
858+
CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP = "YES";
859+
}
860+
}
861+
846862
function Build-BuildTools($Arch) {
847863
Build-CMakeProject `
848864
-Src $SourceCache\llvm-project\llvm `
@@ -874,6 +890,7 @@ function Build-BuildTools($Arch) {
874890
SWIFT_INCLUDE_APINOTES = "NO";
875891
SWIFT_INCLUDE_DOCS = "NO";
876892
SWIFT_INCLUDE_TESTS = "NO";
893+
"cmark-gfm_DIR" = "$($HostArch.BinaryCache)\cmark-gfm-0.29.0.gfm.13";
877894
}
878895
}
879896

@@ -937,7 +954,6 @@ function Build-Compilers() {
937954
LLDB_PYTHON_RELATIVE_PATH = "lib/site-packages";
938955
LLDB_TABLEGEN = "$BinaryCache\0\bin\lldb-tblgen.exe";
939956
LLVM_CONFIG_PATH = "$BinaryCache\0\bin\llvm-config.exe";
940-
LLVM_EXTERNAL_CMARK_SOURCE_DIR = "$SourceCache\cmark";
941957
LLVM_EXTERNAL_SWIFT_SOURCE_DIR = "$SourceCache\swift";
942958
LLVM_NATIVE_TOOL_DIR = "$BinaryCache\0\bin";
943959
LLVM_TABLEGEN = "$BinaryCache\0\bin\llvm-tblgen.exe";
@@ -955,6 +971,7 @@ function Build-Compilers() {
955971
SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE = "$SourceCache\swift-syntax";
956972
SWIFT_PATH_TO_STRING_PROCESSING_SOURCE = "$SourceCache\swift-experimental-string-processing";
957973
SWIFT_PATH_TO_SWIFT_SDK = (Get-PinnedToolchainSDK);
974+
"cmark-gfm_DIR" = "$($HostArch.BinaryCache)\cmark-gfm-0.29.0.gfm.13";
958975
})
959976
}
960977
}
@@ -1739,6 +1756,7 @@ if (-not $SkipBuild) {
17391756
}
17401757

17411758
if (-not $SkipBuild) {
1759+
Invoke-BuildStep Build-CMark $HostArch
17421760
Invoke-BuildStep Build-BuildTools $HostArch
17431761
Invoke-BuildStep Build-Compilers $HostArch
17441762
}

0 commit comments

Comments
 (0)