├── .github └── workflows │ └── ci.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── manylinux-build.sh └── manylinux-internal.sh /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Multi-Arch CI 2 | 3 | on: 4 | push: 5 | branches: ["master"] 6 | pull_request: 7 | branches: ["master"] 8 | 9 | jobs: 10 | build: 11 | name: Build (OS=${{ matrix.os }}, Arch=${{ matrix.arch }}) 12 | runs-on: ${{ matrix.os }} 13 | strategy: 14 | fail-fast: false 15 | matrix: 16 | os: [ ubuntu-24.04, ubuntu-22.04] 17 | arch: [ x86_64 ] 18 | include: 19 | - os: ubuntu-24.04-arm 20 | arch: aarch64 21 | - os: ubuntu-22.04-arm 22 | arch: aarch64 23 | - os: macos-13 24 | arch: x86_64 25 | - os: macos-15 26 | arch: arm64 27 | - os: windows-2025 28 | arch: amd64 29 | 30 | steps: 31 | - name: Checkout code 32 | uses: actions/checkout@v4 33 | 34 | ##################################### 35 | # Dependencies Installation (Optional) 36 | ##################################### 37 | 38 | # Linux dependencies 39 | - name: Install dependencies (Linux) 40 | if: startsWith(matrix.os, 'ubuntu') 41 | run: | 42 | sudo apt-get update 43 | sudo apt-get install -y build-essential ninja-build cmake git 44 | # If you need system LLVM for something else: 45 | # sudo apt-get install -y clang lld llvm-dev libclang-dev 46 | 47 | # macOS dependencies 48 | - name: Install dependencies (macOS) 49 | if: startsWith(matrix.os, 'macos') 50 | run: | 51 | brew update 52 | brew install ninja cmake git 53 | 54 | # Windows dependencies 55 | - name: Install dependencies (Windows) 56 | if: startsWith(matrix.os, 'windows') 57 | shell: pwsh 58 | run: | 59 | choco install ninja cmake git -y 60 | - name: Setup MSBuild (Windows) 61 | if: startsWith(matrix.os, 'windows') 62 | uses: microsoft/setup-msbuild@v2 63 | 64 | ##################################### 65 | # Configure the Superbuild 66 | ##################################### 67 | - name: Configure 68 | run: | 69 | cmake -B build -S . -GNinja 70 | shell: bash 71 | 72 | ##################################### 73 | # Build the Superbuild 74 | ##################################### 75 | - name: Build 76 | run: ninja -C build 77 | shell: bash 78 | 79 | ##################################### 80 | # [Optional] Run Tests 81 | ##################################### 82 | - name: Test 83 | run: | 84 | cd build/castxml-prefix/src/castxml-build 85 | ctest --output-on-failure 86 | 87 | ##################################### 88 | # Package the resulting castxml binary 89 | ##################################### 90 | - name: Create Artifact (Windows) 91 | if: startsWith(matrix.os, 'windows') 92 | shell: cmd 93 | run: | 94 | cd build 95 | 7z a castxml-${{ matrix.os }}-${{ matrix.arch }}.zip castxml 96 | move castxml-${{ matrix.os }}-${{ matrix.arch }}.zip .. 97 | 98 | - name: Create Artifact (Non-Windows) 99 | if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') 100 | shell: bash 101 | run: | 102 | cd build 103 | tar cvf castxml-${{ matrix.os }}-${{ matrix.arch }}.tar castxml 104 | gzip -9 castxml-${{ matrix.os }}-${{ matrix.arch }}.tar 105 | mv castxml-${{ matrix.os }}-${{ matrix.arch }}.tar.gz .. 106 | 107 | - name: Upload Artifact 108 | uses: actions/upload-artifact@v4 109 | with: 110 | name: castxml-${{ matrix.os }}-${{ matrix.arch }} 111 | path: ./castxml-${{ matrix.os }}-${{ matrix.arch }}.* 112 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dockcross-x64 2 | castxml-linux.tar.gz 3 | castxml-linux-aarch64.tar.gz 4 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.20) 2 | 3 | project(CastXMLSuperbuild NONE) 4 | # Set a default build type if none was specified 5 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 6 | message(STATUS "Setting build type to 'Release' as none was specified.") 7 | set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) 8 | # Set the possible values of build type for cmake-gui 9 | set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") 10 | endif() 11 | enable_language(C) 12 | enable_language(CXX) 13 | 14 | 15 | set(CMAKE_CXX_STANDARD "17") 16 | 17 | 18 | if(APPLE) 19 | set(osx_args 20 | -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.11 21 | ) 22 | endif() 23 | 24 | 25 | include(ExternalProject) 26 | 27 | if(${CMAKE_VERSION} VERSION_LESS 3.24) 28 | set(download_extract_timestamp_flag) 29 | else() 30 | set(download_extract_timestamp_flag DOWNLOAD_EXTRACT_TIMESTAMP TRUE) 31 | endif() 32 | 33 | find_program(NINJA_EXECUTABLE ninja) 34 | if(NINJA_EXECUTABLE) 35 | set(CMAKE_GENERATOR "Ninja") 36 | # Make Ninja verbose so CircleCI does not think the build has halted. 37 | set(verbose_command BUILD_COMMAND ${NINJA_EXECUTABLE} ${BUILD_FLAGS} -v) 38 | endif() 39 | 40 | option(USE_SYSTEM_LLVM "Use the system LLVM instead of building it." OFF) 41 | if(USE_SYSTEM_LLVM) 42 | find_package(LLVM REQUIRED NO_MODULE) 43 | set(castxml_deps) 44 | else() 45 | 46 | set(llvm_version 18.1.3) 47 | set(llvm_folder 18.1.3) 48 | set(LLVM_DIR ${CMAKE_CURRENT_BINARY_DIR}/llvm/lib/cmake/llvm/) 49 | 50 | set(llvm_cmake_sha256 acfecb615d41c5b1a0a31e15324994ca06f7a3f37d8958d719b20de0d217b71b) 51 | ExternalProject_Add(llvm-cmake 52 | URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder}/cmake-${llvm_version}.src.tar.xz" 53 | URL_HASH SHA256=${llvm_cmake_sha256} 54 | CONFIGURE_COMMAND "" 55 | BUILD_COMMAND "" 56 | INSTALL_COMMAND "" 57 | ${download_extract_timestamp_flag} 58 | LOG_BUILD 0 59 | SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/cmake 60 | ) 61 | 62 | set(llvm_sha256 fa6db8951f5ef576ac6bad43d5e1ed83962754538c998fbfa0397cd4521abc00) 63 | ExternalProject_Add(llvm 64 | URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder}/llvm-${llvm_version}.src.tar.xz" 65 | URL_HASH SHA256=${llvm_sha256} 66 | DEPENDS llvm-cmake 67 | CMAKE_ARGS -Wno-dev 68 | CMAKE_GENERATOR "${CMAKE_GENERATOR}" 69 | CMAKE_CACHE_ARGS 70 | -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} 71 | -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD} 72 | -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} 73 | -DLLVM_STATIC_LINK_CXX_STDLIB:BOOL=ON 74 | -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 75 | -DCMAKE_INSTALL_PREFIX:PATH= 76 | -DLLVM_INSTALL_PREFIX:PATH= 77 | -DLLVM_ENABLE_TERMINFO:BOOL=OFF 78 | -DLLVM_INCLUDE_TESTS:BOOL=OFF 79 | -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF 80 | -DLLVM_INCLUDE_DOCS:BOOL=OFF 81 | -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN:BOOL=ON 82 | ${osx_args} 83 | ${verbose_command} 84 | ${download_extract_timestamp_flag} 85 | LOG_BUILD 0 86 | INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/llvm 87 | ) 88 | 89 | 90 | set(clang_sha256 e43e1729713ac0241aa026fa2f98bb54e74a196a6fed60ab4819134a428eb6d8) 91 | ExternalProject_Add(clang 92 | URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder}/clang-${llvm_version}.src.tar.xz" 93 | URL_HASH SHA256=${clang_sha256} 94 | DEPENDS llvm 95 | SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/cfe-${llvm_version} 96 | CMAKE_ARGS -Wno-dev 97 | CMAKE_GENERATOR "${CMAKE_GENERATOR}" 98 | CMAKE_CACHE_ARGS 99 | -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} 100 | -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD} 101 | -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} 102 | -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 103 | -DCMAKE_INSTALL_PREFIX:PATH= 104 | -DCLANG_INCLUDE_DOCS:BOOL=OFF 105 | -DCLANG_INCLUDE_TESTS:BOOL=OFF 106 | -DLLVM_INCLUDE_TESTS:BOOL=OFF 107 | -DLLVM_CONFIG:PATH=${CMAKE_CURRENT_BINARY_DIR}/llvm/bin/llvm-config 108 | -DLLVM_DIR:PATH=${LLVM_DIR} 109 | -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN:BOOL=ON 110 | ${osx_args} 111 | ${verbose_command} 112 | ${download_extract_timestamp_flag} 113 | LOG_BUILD 0 114 | INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/llvm 115 | ) 116 | 117 | set(castxml_deps llvm clang) 118 | endif() 119 | 120 | 121 | # Use a static C++ library on GCC/Linux 122 | if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_NAME MATCHES "Linux") 123 | set(linux_args "-DCMAKE_CXX_FLAGS:STRING=-static-libstdc++") 124 | endif() 125 | # 2024-04-12 master 126 | set(CastXML_GIT_TAG v0.6.11 CACHE STRING "CastXML Git revision.") 127 | ExternalProject_Add(castxml 128 | GIT_REPOSITORY https://github.com/CastXML/CastXML.git 129 | GIT_TAG ${CastXML_GIT_TAG} 130 | DEPENDS ${castxml_deps} 131 | CMAKE_ARGS -Wno-dev 132 | CMAKE_GENERATOR "${CMAKE_GENERATOR}" 133 | CMAKE_CACHE_ARGS 134 | -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} 135 | -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD} 136 | -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} 137 | -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 138 | -DCMAKE_INSTALL_PREFIX:PATH= 139 | -DLLVM_DIR:PATH=${LLVM_DIR} 140 | ${osx_args} 141 | ${linux_args} 142 | ${verbose_command} 143 | LOG_BUILD 0 144 | INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/castxml 145 | ) 146 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CastXML Superbuild 2 | 3 | [![CI](https://github.com/CastXML/CastXMLSuperbuild/actions/workflows/ci.yml/badge.svg)](https://github.com/CastXML/CastXMLSuperbuild/actions/workflows/ci.yml) 4 | 5 | This builds [CastXML](https://github.com/CastXML/CastXML) and its 6 | dependencies (LLVM/Clang) with CMake\'s 7 | [ExternalProject](http://www.cmake.org/cmake/help/git-master/module/ExternalProject.html) 8 | module. It is a cross-platform way to build CastXML. 9 | 10 | This can be built like any other [CMake](http://cmake.org) project. For 11 | example: 12 | 13 | git clone https://github.com/CastXML/CastXMLSuperbuild.git 14 | mkdir CastXMLSuperbuild-build 15 | cd CastXMLSuperbuild-build 16 | cmake -GNinja ../CastXMLSuperbuild 17 | ninja 18 | 19 | This requires [ninja](https://ninja-build.org/), which comes with recent 20 | Visual Studio on Windows, can be installed on macOS with `brew install ninja`, 21 | and can be installed with the `ninja-build` package in most Linux package 22 | managers. 23 | 24 | The resulting `castxml` executable will be located at 25 | *CastXMLSuperbuild-build/castxml/bin/castxml*. 26 | 27 | The resulting binary builds for Linux, Mac OSX, and Windows [are 28 | available 29 | here](https://github.com/CastXML/CastXMLSuperbuild/releases). 30 | -------------------------------------------------------------------------------- /manylinux-build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e -x -o pipefail 4 | 5 | 6 | dockcross_version=20250109-7bf589c 7 | 8 | podman pull docker.io/dockcross/manylinux_2_28-x64:$dockcross_version 9 | podman run --rm docker.io/dockcross/manylinux_2_28-x64:$dockcross_version > ./dockcross-x64 10 | chmod +x ./dockcross-x64 11 | 12 | ./dockcross-x64 cmake -Bbuild -S. -GNinja 13 | ./dockcross-x64 ninja -Cbuild 14 | 15 | pushd build 16 | tar cvf ../castxml-linux.tar castxml 17 | gzip -9 ../castxml-linux.tar 18 | popd 19 | rm -rf build 20 | 21 | 22 | manylinux_version=2025.01.24-1 23 | 24 | cat << EOF 25 | 26 | Note! 27 | Need to run: 28 | 29 | sudo podman run --privileged --rm tonistiigi/binfmt --install all 30 | 31 | once before running the following commands on an amd64 system. 32 | 33 | EOF 34 | 35 | podman pull quay.io/pypa/manylinux_2_28_aarch64:$manylinux_version 36 | podman run -it --rm -v $(pwd):/work quay.io/pypa/manylinux_2_28_aarch64:$manylinux_version /work/manylinux-internal.sh 37 | -------------------------------------------------------------------------------- /manylinux-internal.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e -x -o pipefail 4 | 5 | # This script is executed inside the manylinux container to build castxml for an aarch64 linux system 6 | cd /work 7 | 8 | git clone https://github.com/ninja-build/ninja.git 9 | pushd ninja 10 | git checkout release 11 | cmake -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE:STRING=Release -Bbuild-cmake -S. 12 | cmake --build build-cmake --parallel 8 13 | cp build-cmake/ninja /usr/local/bin/ 14 | popd 15 | rm -rf ninja 16 | 17 | cmake -Bbuild -S. -GNinja 18 | ninja -Cbuild 19 | 20 | pushd build 21 | tar cvf ../castxml-linux-aarch64.tar castxml 22 | gzip -9 ../castxml-linux-aarch64.tar 23 | popd 24 | rm -rf build 25 | --------------------------------------------------------------------------------