From 0afdd9780105798b10cd8180b3d407c42bc8a12e Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Sat, 28 Mar 2026 23:46:05 +0100 Subject: [PATCH] Packaging --- .gitea/workflows/package.yml | 55 ++ .../{Bin2CPPExe => Bin2CPP}/CMakeLists.txt | 6 +- .../Sources/{Bin2CPPExe => Bin2CPP}/main.cpp | 0 Bin2CPP/Sources/CMakeLists.txt | 2 +- CMake/Bin2CPPTargets.cmake | 23 + CMake/FindDependencies.cmake | 6 +- CMakeLists.txt | 5 +- Vendor/NatVis/EASTL/EASTL.natvis | 761 ------------------ conanfile.py | 28 +- test_package/CMakeLists.txt | 7 + test_package/conanfile.py | 18 + 11 files changed, 135 insertions(+), 776 deletions(-) create mode 100644 .gitea/workflows/package.yml rename Bin2CPP/Sources/{Bin2CPPExe => Bin2CPP}/CMakeLists.txt (95%) rename Bin2CPP/Sources/{Bin2CPPExe => Bin2CPP}/main.cpp (100%) create mode 100644 CMake/Bin2CPPTargets.cmake delete mode 100644 Vendor/NatVis/EASTL/EASTL.natvis create mode 100644 test_package/CMakeLists.txt create mode 100644 test_package/conanfile.py diff --git a/.gitea/workflows/package.yml b/.gitea/workflows/package.yml new file mode 100644 index 0000000..b64f5c9 --- /dev/null +++ b/.gitea/workflows/package.yml @@ -0,0 +1,55 @@ +name: Conan Packaging + +on: + push: + branches: + - '**' + workflow_dispatch: + +env: + CCACHE_BASEDIR: ${{ github.workspace }} + +jobs: + conan-packages: + runs-on: ubuntu-latest + timeout-minutes: 120 + container: + image: git.romainboullard.com/bigfootdev/linuxcppbuilder:main + env: + ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + name: "Package Bin2CPP/1.0.0" + steps: + - name: Set BRANCH_NAME + run: echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + - name: Install Node.js + run: apt-get update && apt-get install -y nodejs + + - name: Checkout repository + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Show ccache stats before + run: ccache --zero-stats + + - name: Run Conan packaging + run: | + echo "Building Bin2CPP@$1.0.0" + CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ + CONAN_PASSWORD=${ARTIFACTORY_PASSWORD} \ + conan create . \ + --version=1.0.0 \ + --user=bigfootdev \ + --channel=${{ env.BRANCH_NAME }} \ + -pr:b=./ConanProfiles/clang -pr:h=./ConanProfiles/clang \ + --build=missing --remote=bigfootpackages + + CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ + CONAN_PASSWORD=${ARTIFACTORY_PASSWORD} \ + conan upload Bin2CPP/1.0.0@bigfootdev/${{ env.BRANCH_NAME }} \ + --only-recipe --remote=bigfootpackages + + - name: Show ccache stats after + run: ccache --show-stats diff --git a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt similarity index 95% rename from Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt rename to Bin2CPP/Sources/Bin2CPP/CMakeLists.txt index 6b8e2d4..c72f1be 100644 --- a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt @@ -49,4 +49,8 @@ if(${ASAN}) COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" ) endif() -endif() \ No newline at end of file +endif() + +########INSTALL + +install(TARGETS ${PROJECT_NAME} DESTINATION bin) \ No newline at end of file diff --git a/Bin2CPP/Sources/Bin2CPPExe/main.cpp b/Bin2CPP/Sources/Bin2CPP/main.cpp similarity index 100% rename from Bin2CPP/Sources/Bin2CPPExe/main.cpp rename to Bin2CPP/Sources/Bin2CPP/main.cpp diff --git a/Bin2CPP/Sources/CMakeLists.txt b/Bin2CPP/Sources/CMakeLists.txt index 81727b5..96c48ae 100644 --- a/Bin2CPP/Sources/CMakeLists.txt +++ b/Bin2CPP/Sources/CMakeLists.txt @@ -1,2 +1,2 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bin2CPPLib) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bin2CPPExe) \ No newline at end of file +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bin2CPP) \ No newline at end of file diff --git a/CMake/Bin2CPPTargets.cmake b/CMake/Bin2CPPTargets.cmake new file mode 100644 index 0000000..9dfd8e6 --- /dev/null +++ b/CMake/Bin2CPPTargets.cmake @@ -0,0 +1,23 @@ +if(NOT TARGET Bin2CPP) + if(CMAKE_CROSSCOMPILING) + find_program(BIN2CPP_EXECUTABLE + NAMES Bin2CPP + PATHS ENV PATH + NO_DEFAULT_PATH + ) + else() + find_program(BIN2CPP_EXECUTABLE + NAMES Bin2CPP + PATHS "${CMAKE_CURRENT_LIST_DIR}" + NO_DEFAULT_PATH + ) + endif() + + if(BIN2CPP_EXECUTABLE) + get_filename_component(BIN2CPP_EXECUTABLE "${BIN2CPP_EXECUTABLE}" ABSOLUTE) + add_executable(Bin2CPP IMPORTED) + set_property(TARGET Bin2CPP PROPERTY IMPORTED_LOCATION ${BIN2CPP_EXECUTABLE}) + else() + message(WARNING "Bin2CPP executable not found in ${CMAKE_CURRENT_LIST_DIR}") + endif() +endif() diff --git a/CMake/FindDependencies.cmake b/CMake/FindDependencies.cmake index a153e29..d4c47b6 100644 --- a/CMake/FindDependencies.cmake +++ b/CMake/FindDependencies.cmake @@ -15,11 +15,7 @@ else() find_package(mimalloc REQUIRED) endif() -if(${IS_MULTI_CONFIG}) - find_package(cpptrace REQUIRED) -elseif(${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") - find_package(cpptrace REQUIRED) -endif() +find_package(cpptrace REQUIRED) if(BUILD_TESTS) find_package(GTest REQUIRED) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6041a4f..0fd5e87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,7 +33,4 @@ SET(CMAKE_INSTALL_RPATH "\${ORIGIN}") add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bin2CPP/Sources) if(${BUILD_TESTS}) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bin2CPP/Tests) -endif() - -add_custom_target(NatVis SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/Vendor/NatVis/EASTL/EASTL.natvis) \ No newline at end of file +endif() \ No newline at end of file diff --git a/Vendor/NatVis/EASTL/EASTL.natvis b/Vendor/NatVis/EASTL/EASTL.natvis deleted file mode 100644 index e1ec96d..0000000 --- a/Vendor/NatVis/EASTL/EASTL.natvis +++ /dev/null @@ -1,761 +0,0 @@ - - - - - - - - ({(void*)mPair.mFirst} = {*mPair.mFirst}) - ({nullptr}) - - (void*)mPair.mFirst - *mPair.mFirst - - - - - ({(void*)mpValue} = {*mpValue}) - ({nullptr}) - - (void*)mpValue - *mpValue - mpRefCount->mRefCount - mpRefCount->mWeakRefCount - - - - - {((mpRefCount && mpRefCount->mRefCount) ? mpValue : nullptr)} - - mpRefCount && mpRefCount->mRefCount ? mpValue : nullptr - - - - - [{$T2}] {{}} - [{$T2}] {{ {*mValue} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)} }} - [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)}, ... }} - - $T2 - - $T2 - mValue - - - - - - "{mPair.mFirst.heap.mpBegin,sb}" - "{mPair.mFirst.sso.mData,sb}" - - mPair.mFirst.heap.mnSize - (mPair.mFirst.heap.mnCapacity & ~kHeapMask) - mPair.mFirst.heap.mpBegin,sb - - (SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize) - SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mData,sb - - !!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask) - - - - - - {mPair.mFirst.heap.mpBegin,su} - {mPair.mFirst.sso.mData,su} - - mPair.mFirst.heap.mnSize - (mPair.mFirst.heap.mnCapacity & ~kHeapMask) - mPair.mFirst.heap.mpBegin,su - - (SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize) - SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mData,su - - !!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask) - - - - - ({first}, {second}) - - first - second - - - - - [{mnSize}] {{}} - [{mnSize}] {{ {*mpData} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)}, {*(mpData+5)} }} - [{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)}, {*(mpData+5)}, ... }} - - mnSize - - mnSize - mpData - - - - - - [{mpEnd - mpBegin}] {{}} - [{mpEnd - mpBegin}] {{ {*mpBegin} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)} }} - [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)}, ... }} - - mpEnd - mpBegin - mCapacityAllocator.mFirst - mpBegin - - mpEnd - mpBegin - mpBegin - - - - - - - [0] {{}} - - - [1] {{ {*mItBegin.mpCurrent} }} - - - [{(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin)}] - {{ - {*mItBegin.mpCurrent}, - ... - }} - - - (mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) - - (mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) - mItBegin.mpCurrentArrayPtr[(mItBegin.mpCurrent-mItBegin.mpBegin + $i) / $T3][(mItBegin.mpCurrent-mItBegin.mpBegin + $i) % $T3] - - - - - - {*mpCurrent} - - *mpCurrent - *(*(mpCurrentArrayPtr-1) + (mpEnd-mpBegin) - 1) - *(mpCurrent-1) - **(mpCurrentArrayPtr+1) - *(mpCurrent+1) - mpCurrent == mpBegin - mpCurrent+1 == mpEnd - - - - - - - {c} - - c - - - - - - [0] {{}} - - - [1] {{ {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue} }} - - - [2] - {{ - {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue}, - {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue} - }} - - - [?] - {{ - {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue}, - {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue}, - ... - }} - - - - Content of lists will repeat indefinitely. Keep that in mind! - - - mNodeAllocator.mFirst.mpNext - mpNext - ((eastl::ListNode<$T1>*)this)->mValue - - - - - - {mValue} - - mValue - *(eastl::ListNode<$T1>*)mpNext - *(eastl::ListNode<$T1>*)mpPrev - - Content of lists will repeat indefinitely. Keep that in mind! - - - The rest of the list follows: - - - (eastl::ListNode<$T1>*)mpNext->mpNext - (eastl::ListNode<$T1>*)mpNext - mValue - - - - - - {*mpNode} - - *(eastl::ListNode<$T1>*)mpNode - - - - - - [0] {{}} - - - [1] - {{ - {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue} - }} - - - [2] - {{ - {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue}, - {((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue} - }} - - - [?] - {{ - {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue}, - {((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue}, - ... - }} - - - - mNode.mpNext - mpNext - ((eastl::SListNode<$T1>*)this)->mValue - - - - - - {mValue} - - mValue - *(eastl::SListNode<$T1>*)mpNext - - The rest of the list follows: - - - mpNext == nullptr ? nullptr : (eastl::SListNode<$T1>*)mpNext->mpNext - (eastl::SListNode<$T1>*)mpNext - mValue - - - - - - {*mpNode} - - *(eastl::SListNode<$T1>*)mpNode - - - - - [0] {{}} - [1] {{ {mAnchor.mpNext} }} - [?] {{ {mAnchor.mpNext}, ... }} - - - Content of intrusive lists will repeat indefinitely. Keep that in mind! - - - mAnchor.mpNext - mpNext - *this - - - - - - {*($T1*)mpNode} - - *($T1*)mpNode - - - - - - - [0] {{}} - - - [1] - {{ - {((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue} - }} - - - [{mnSize}] - {{ - {((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue}, - ... - }} - - - mnSize - - mnSize - mAnchor.mpNodeParent - mpNodeLeft - mpNodeRight - ((eastl::rbtree_node<$T1>*)this)->mValue - - - - - - - [0] {{}} - - - [1] - {{ - {((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue} - }} - - - [{mnSize}] - {{ - {((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue}, - ... - }} - - - mnSize - - mnSize - mAnchor.mpNodeParent - mpNodeLeft - mpNodeRight - ((eastl::rbtree_node<$T2>*)this)->mValue - - - - - - {mValue} - - mValue - - It is possible to expand parents that do not exist. - - *(eastl::rbtree_node<$T1>*)mpNodeParent - *(eastl::rbtree_node<$T1>*)mpNodeLeft - *(eastl::rbtree_node<$T1>*)mpNodeRight - - - - - {*(eastl::rbtree_node<$T1>*)mpNode} - - *(eastl::rbtree_node<$T1>*)mpNode - - - - - - [{mnElementCount}] {{}} - [{mnElementCount}] {{ ... }} - - - mnBucketCount - mpBucketArray - - - - - - entry->mValue - - entry = entry->mpNext - - - bucketIndex++ - - entry = mpBucketArray[bucketIndex] - - - - - - - - - [{mnElementCount}] {{}} - [{mnElementCount}] {{ ... }} - - - - - - entry->mValue.second - - entry = entry->mpNext - - - bucketIndex++ - - entry = mpBucketArray[bucketIndex] - - - - - - - - {mValue}, {*mpNext} - {mValue} - - - - this - mpNext - mValue - - - - - - {mpNode->mValue} - - mpNode->mValue - - - - - {*(mIterator-1)} - - mIterator-1 - - - - - {{count = {kSize}}} - - kSize - - - - - - kSize - - - bBitValue = ((mWord[iWord] >> iBitInWord) % 2) != 0 ? true : false - bBitValue - iBitInWord++ - - iWord++ - iBitInWord = 0 - - - - - - - - {c} - - c - - - - - {mpBegin,[mnCount]} - mpBegin,[mnCount] - - - - ({mFirst}, {mSecond}) - ({mSecond}) - ({mFirst}) - (empty) - (empty) - ({mFirst}, {mSecond}) - - - - - nullopt - {value()} - - value() - - - - - {$T1} to {$T2}} - - - - - {mRep} nanoseconds - - - - {mRep} microseconds - - - - {mRep} milliseconds - - - - {mRep} seconds - - - - {mRep} minutes - - - - {mRep} hours - - - - {mRep} duration with ratio = [{$T2} : {$T3}] - - - - - - empty - {mInvokeFuncPtr} - - - - - {*val} - - - - - empty - {m_storage.external_storage} - - - - - {mAtomic} - - mAtomic - - - - - {mFlag.mAtomic} - - - - - [valueless_by_exception] - {{ index=0, value={($T1*)mStorage.mBuffer.mCharData}} - {{ index=1, value={($T2*)mStorage.mBuffer.mCharData}} - {{ index=2, value={($T3*)mStorage.mBuffer.mCharData}} - {{ index=3, value={($T4*)mStorage.mBuffer.mCharData}} - {{ index=4, value={($T5*)mStorage.mBuffer.mCharData}} - {{ index=5, value={($T6*)mStorage.mBuffer.mCharData}} - {{ index=6, value={($T7*)mStorage.mBuffer.mCharData}} - {{ index=7, value={($T8*)mStorage.mBuffer.mCharData}} - {{ index=8, value={($T9*)mStorage.mBuffer.mCharData}} - {{ index=9, value={($T10*)mStorage.mBuffer.mCharData}} - {{ index=10, value={($T11*)mStorage.mBuffer.mCharData}} - {{ index=11, value={($T12*)mStorage.mBuffer.mCharData}} - {{ index=12, value={($T13*)mStorage.mBuffer.mCharData}} - {{ index=13, value={($T14*)mStorage.mBuffer.mCharData}} - {{ index=14, value={($T15*)mStorage.mBuffer.mCharData}} - {{ index=15, value={($T16*)mStorage.mBuffer.mCharData}} - {{ index=16, value={($T17*)mStorage.mBuffer.mCharData}} - {{ index=17, value={($T18*)mStorage.mBuffer.mCharData}} - {{ index=18, value={($T19*)mStorage.mBuffer.mCharData}} - {{ index=19, value={($T20*)mStorage.mBuffer.mCharData}} - {{ index=20, value={($T21*)mStorage.mBuffer.mCharData}} - {{ index=21, value={($T22*)mStorage.mBuffer.mCharData}} - {{ index=22, value={($T23*)mStorage.mBuffer.mCharData}} - {{ index=23, value={($T24*)mStorage.mBuffer.mCharData}} - {{ index=24, value={($T25*)mStorage.mBuffer.mCharData}} - {{ index=25, value={($T26*)mStorage.mBuffer.mCharData}} - {{ index=26, value={($T27*)mStorage.mBuffer.mCharData}} - {{ index=27, value={($T28*)mStorage.mBuffer.mCharData}} - {{ index=28, value={($T29*)mStorage.mBuffer.mCharData}} - {{ index=29, value={($T30*)mStorage.mBuffer.mCharData}} - {{ index=30, value={($T31*)mStorage.mBuffer.mCharData}} - - index() - ($T1*)mStorage.mBuffer.mCharData - ($T2*)mStorage.mBuffer.mCharData - ($T3*)mStorage.mBuffer.mCharData - ($T4*)mStorage.mBuffer.mCharData - ($T5*)mStorage.mBuffer.mCharData - ($T6*)mStorage.mBuffer.mCharData - ($T7*)mStorage.mBuffer.mCharData - ($T8*)mStorage.mBuffer.mCharData - ($T9*)mStorage.mBuffer.mCharData - ($T10*)mStorage.mBuffer.mCharData - ($T11*)mStorage.mBuffer.mCharData - ($T12*)mStorage.mBuffer.mCharData - ($T13*)mStorage.mBuffer.mCharData - ($T14*)mStorage.mBuffer.mCharData - ($T15*)mStorage.mBuffer.mCharData - ($T16*)mStorage.mBuffer.mCharData - ($T17*)mStorage.mBuffer.mCharData - ($T18*)mStorage.mBuffer.mCharData - ($T19*)mStorage.mBuffer.mCharData - ($T20*)mStorage.mBuffer.mCharData - ($T21*)mStorage.mBuffer.mCharData - ($T22*)mStorage.mBuffer.mCharData - ($T23*)mStorage.mBuffer.mCharData - ($T24*)mStorage.mBuffer.mCharData - ($T25*)mStorage.mBuffer.mCharData - ($T26*)mStorage.mBuffer.mCharData - ($T27*)mStorage.mBuffer.mCharData - ($T28*)mStorage.mBuffer.mCharData - ($T29*)mStorage.mBuffer.mCharData - ($T30*)mStorage.mBuffer.mCharData - ($T31*)mStorage.mBuffer.mCharData - - - - - - - ({*this,view(noparens)}) - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue - - - - - {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue} - ({*this,view(noparens)}) - - (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue - (*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue - - - - - diff --git a/conanfile.py b/conanfile.py index be7f89b..84bc3a1 100644 --- a/conanfile.py +++ b/conanfile.py @@ -6,7 +6,7 @@ import os required_conan_version = ">=1.33.0" class Bin2CPP(ConanFile): - name = "Bin2CPP" + name = "bin2cpp" homepage = "https://git.romainboullard.com/rboullard/Bin2CPP" description = "A utility that converts files to CPP headers" topics = ("utility") @@ -33,6 +33,11 @@ class Bin2CPP(ConanFile): generators = "CMakeDeps" + def export_sources(self): + copy(self, "CMakeLists.txt", self.recipe_folder, self.export_sources_folder) + copy(self, os.path.join("Bin2CPP", "*"), self.recipe_folder, self.export_sources_folder) + copy(self, os.path.join("CMake", "*"), self.recipe_folder, self.export_sources_folder) + def layout(self): cmake_layout(self) @@ -49,8 +54,7 @@ class Bin2CPP(ConanFile): self.requires("mimalloc/3.2.8@bigfootdev/main", transitive_headers=True) self.requires("cli11/2.6.1@bigfootdev/main") - if(self.settings.build_type == "RelWithDebInfo" or self.settings.build_type == "Debug"): - self.requires("cpptrace/1.0.4", transitive_headers=True) + self.requires("cpptrace/1.0.4", transitive_headers=True) if(self.options.build_tests): self.test_requires("gtest/1.17.0") @@ -67,4 +71,20 @@ class Bin2CPP(ConanFile): def build(self): cmake = CMake(self) cmake.configure() - cmake.build() \ No newline at end of file + cmake.build() + + def package(self): + copy(self, pattern="LICENSE", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder) + cmake = CMake(self) + cmake.install() + + copy(self, "Bin2CPPTargets.cmake", + src=os.path.join(self.source_folder, "CMake"), + dst=os.path.join(self.package_folder, "bin")) + + @property + def _module_path(self): + return os.path.join("bin", "Bin2CPPTargets.cmake") + + def package_info(self): + self.cpp_info.set_property("cmake_build_modules", [self._module_path]) \ No newline at end of file diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt new file mode 100644 index 0000000..20ef5be --- /dev/null +++ b/test_package/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.15) +project(test_package LANGUAGES C) + +find_package(Bin2CPP REQUIRED CONFIG) + +find_program(BIN2CPP_EXECUTABLE NAMES Bin2CPP) +execute_process(COMMAND ${BIN2CPP_EXECUTABLE} -h) diff --git a/test_package/conanfile.py b/test_package/conanfile.py new file mode 100644 index 0000000..c1dcff9 --- /dev/null +++ b/test_package/conanfile.py @@ -0,0 +1,18 @@ +from conan import ConanFile +from conan.tools.build import can_run +from conan.tools.cmake import CMake, cmake_layout +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "CMakeToolchain", "CMakeDeps", "VirtualRunEnv" + + def layout(self): + cmake_layout(self) + + def requirements(self): + self.requires(self.tested_reference_str) + + def test(self): + self.run("Bin2CPP --help", env="conanrun")