diff options
author | crupest <crupest@outlook.com> | 2023-10-07 00:27:54 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-10-07 00:27:54 +0800 |
commit | 2e0eebc4867f5b40c2d457015f267e8d7ebe21ca (patch) | |
tree | 1df65288400fac72dea08e8d08b4e4a18ce624ab | |
parent | 538616817a749642836ad3b2faff16706500602e (diff) | |
download | cru-2e0eebc4867f5b40c2d457015f267e8d7ebe21ca.tar.gz cru-2e0eebc4867f5b40c2d457015f267e8d7ebe21ca.tar.bz2 cru-2e0eebc4867f5b40c2d457015f267e8d7ebe21ca.zip |
Try build cairo myself.
-rw-r--r-- | .editorconfig | 2 | ||||
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | CMakeLists.txt | 3 | ||||
m--------- | lib/cairo | 0 | ||||
-rw-r--r-- | scripts/cmake/cairo.cmake | 25 | ||||
-rw-r--r-- | scripts/meson-emscripten.ini.in | 27 | ||||
-rw-r--r-- | tools/proxy_domains.txt | 6 |
7 files changed, 65 insertions, 1 deletions
diff --git a/.editorconfig b/.editorconfig index 3455562a..345d6884 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,6 +16,6 @@ indent_size = 2 indent_style = space indent_size = 2 -[CMakeLists.txt] +[*.cmake, CMakeLists.txt] indent_style = tab indent_size = 4 diff --git a/.gitmodules b/.gitmodules index 056b9ef1..f382b935 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/Catch2"] path = lib/Catch2 url = https://github.com/catchorg/Catch2.git +[submodule "lib/cairo"] + path = lib/cairo + url = https://gitlab.freedesktop.org/cairo/cairo.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 155a4687..8b777728 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,3 +50,6 @@ endfunction() add_subdirectory(src) add_subdirectory(test) add_subdirectory(demos) + +include(scripts/cmake/cairo.cmake) + diff --git a/lib/cairo b/lib/cairo new file mode 160000 +Subproject f9de19ad745e587743914a37b1ee3ff804723a0 diff --git a/scripts/cmake/cairo.cmake b/scripts/cmake/cairo.cmake new file mode 100644 index 00000000..d1a775e3 --- /dev/null +++ b/scripts/cmake/cairo.cmake @@ -0,0 +1,25 @@ +find_program(MESON meson REQUIRED) +find_program(NINJA ninja REQUIRED) + +set(CAIRO_BUILD_DIR ${CMAKE_BINARY_DIR}/cairo/build) +set(CAIRO_INSTALL_DIR ${CMAKE_BINARY_DIR}/cairo/install) + +set(CAIRO_MESON_SETUP meson setup ${CAIRO_BUILD_DIR} --prefix=${CAIRO_INSTALL_DIR} --reconfigure) + +if(EMSCRIPTEN) + FILE(REAL_PATH ${CMAKE_C_COMPILER}/.. EMSCRIPTEN_TOOLCHAIN) + set(EMSCRIPTEN_CROSS_FILE_TEMPLATE ${PROJECT_SOURCE_DIR}/scripts/meson-emscripten.ini.in) + set(EMSCRIPTEN_CROSS_FILE ${CAIRO_BUILD_DIR}/emscripten.ini) + configure_file(${EMSCRIPTEN_CROSS_FILE_TEMPLATE} ${EMSCRIPTEN_CROSS_FILE}) + set(CAIRO_MESON_SETUP ${CAIRO_MESON_SETUP} --cross-file ${EMSCRIPTEN_CROSS_FILE}) +endif() + +add_custom_target( + cairo + COMMAND mkdir -p ${CAIRO_BUILD_DIR} ${CAIRO_INSTALL_DIR} + COMMAND ${CAIRO_MESON_SETUP} + COMMAND ninja -C ${CAIRO_BUILD_DIR} + COMMAND ninja -C ${CAIRO_BUILD_DIR} install + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/cairo +) + diff --git a/scripts/meson-emscripten.ini.in b/scripts/meson-emscripten.ini.in new file mode 100644 index 00000000..f8e2fdc0 --- /dev/null +++ b/scripts/meson-emscripten.ini.in @@ -0,0 +1,27 @@ +[constants] +emscripten = '${EMSCRIPTEN_TOOLCHAIN}' + +[binaries] +c = emscripten / 'emcc' +cpp = emscripten / 'em++' +c_ld = emscripten / 'emcc' +cpp_ld = emscripten / 'emcc' +ar = emscripten / 'emar' +nm = emscripten / 'emnm' +ranlid =emscripten / 'emranlib' +strip = emscripten / 'emstrip' + +[built-in options] +default_library = 'static' + +[pixman:project options] +loongson-mmi = 'disabled' +mmx = 'disabled' +sse2 = 'disabled' +ssse3 = 'disabled' +vmx = 'disabled' +arm-simd = 'disabled' +neon = 'disabled' +a64-neon = 'disabled' +iwmmxt = 'disabled' +mips-dspr2 = 'disabled' diff --git a/tools/proxy_domains.txt b/tools/proxy_domains.txt new file mode 100644 index 00000000..c13a1d6f --- /dev/null +++ b/tools/proxy_domains.txt @@ -0,0 +1,6 @@ +measonbuild.com +github.com +zlib.net +download.gnome.org +mirror.ossplanet.net + |