diff options
| author | Stefan Boberg <[email protected]> | 2025-11-07 14:49:13 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-07 14:49:13 +0100 |
| commit | 24e43a913f29ac3b314354e8ce5175f135bcc64f (patch) | |
| tree | ca442937ceeb63461012b33a4576e9835099f106 /thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake | |
| parent | get oplog attachments (#622) (diff) | |
| download | zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.tar.xz zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.zip | |
switch to xmake for package management (#611)
This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder.
It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build.
* Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist
* BLAKE3 is now in-tree at `thirdparty/blake3`
* cpr is now in-tree at `thirdparty/cpr`
* cxxopts is now in-tree at `thirdparty/cxxopts`
* fmt is now in-tree at `thirdparty/fmt`
* robin-map is now in-tree at `thirdparty/robin-map`
* ryml is now in-tree at `thirdparty/ryml`
* sol2 is now in-tree at `thirdparty/sol2`
* spdlog is now in-tree at `thirdparty/spdlog`
* utfcpp is now in-tree at `thirdparty/utfcpp`
* xmake package repo definitions is in `repo`
* implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS
* the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux
* crashpad
* bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
Diffstat (limited to 'thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake')
| -rw-r--r-- | thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake b/thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake new file mode 100644 index 000000000..1633989af --- /dev/null +++ b/thirdparty/ryml/ext/c4core/cmake/c4CatSources.cmake @@ -0,0 +1,105 @@ +if(NOT _c4CatSourcesIncluded) +set(_c4CatSourcesIncluded ON) + + +#------------------------------------------------------------------------------ +# concatenate the source files to an output file, adding preprocessor adjustment +# for correct file/line reporting +function(c4_cat_sources files output umbrella_target) + _c4_cat_sources_create_cat(cat) + c4_to_full_path("${files}" full_files) # we must work with full paths + c4_separate_list("${full_files}" sepfiles) # and use a string instead of a list + c4_dbg("${_c4_prefix}: catting sources to ${output}") + if(NOT EXISTS "${output}") + # the cat command is executed at build time, but we need the output + # file to exist to be able to create the target. so to bootstrap, just + # run the command now + c4_dbg("${_c4_prefix}: creating ${output} for the first time") + execute_process( + COMMAND ${cat} "${sepfiles}" "${output}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + ) + else() + c4_dbg("output exists: ${output}") + endif() + # add a custom command invoking our cat script for the input files + add_custom_command(OUTPUT ${output} + COMMAND ${cat} "${sepfiles}" "${output}" + DEPENDS ${files} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "concatenating sources to ${output}") + if(NOT TARGET ${umbrella_target}) + add_custom_target(${umbrella_target} DEPENDS ${output} ${files}) + endif() +endfunction(c4_cat_sources) + + +#------------------------------------------------------------------------------ +# get a cat script +function(_c4_cat_sources_create_cat catfile) + # create a script to concatenate the sources + if(WIN32) + set(cat ${CMAKE_BINARY_DIR}/_c4catfiles.bat) + set(cattmp ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/_c4catfiles.bat) + else() + set(cat ${CMAKE_BINARY_DIR}/_c4catfiles.sh) + set(cattmp ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/_c4catfiles.sh) + endif() + set(${catfile} ${cat} PARENT_SCOPE) + if(NOT EXISTS ${cat}) + if(WIN32) + file(WRITE ${cattmp} " +setlocal EnableDelayedExpansion +set \"src_files=%1\" +set \"out_file=%2\" +echo.>\"out_file%\" +for %%f in (%src_files%) do ( + echo.>>\"%out_file%\" + echo.>>\"%out_file%\" + echo \"/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/\".>>\"%out_file%\" + echo \"/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/\".>>\"%out_file%\" + echo \"/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/\".>>\"%out_file%\" + echo \"#line 1 \\\"%%f\\\" // reset __LINE__ and __FILE__ to the correct value\".>>\"%out_file%\" + type %%f>>\"%out_file%\" +) +") + else() + file(WRITE ${cattmp} "#!/bin/sh + +src_files=$1 +out_file=$2 +#echo \"src_files $src_files\" +#echo \"out_file $out_file\" + +cat > $out_file << EOF +// DO NOT EDIT. +// this is an auto-generated file, and will be overwritten +EOF +for f in $src_files ; do + cat >> $out_file <<EOF + + +/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/ +/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/ +/*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*/ +#line 1 \"$f\" +EOF + cat $f >> $out_file +done + +echo \"Wrote output to $out_file\" +") + endif() + # add execute permissions + get_filename_component(catdir ${cat} DIRECTORY) + file(COPY ${cattmp} DESTINATION ${catdir} + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) + endif() +endfunction() + + +endif(NOT _c4CatSourcesIncluded) |