Skip to content

Conversation

@kumaakh
Copy link

@kumaakh kumaakh commented Sep 7, 2025

The pull request makes licensecc build with vcpkg package manager.

kumaakh and others added 5 commits February 23, 2025 10:23
provide instructions for a static only build
* Add ARM-compatible CPU info implementation

- Replace x86-specific CPUID instructions with simplified ARM stubs
- Remove dependency on cpuid.h header (x86-only)
- Provide minimal CpuInfo implementation for ARM processors
- Return generic ARM vendor and brand strings

* Add cross-platform CPU info implementation for ARM support

- Preserve original x86/x64 CPUID-based implementation completely intact
- Add ARM/ARM64 support with simplified implementation
- Use preprocessor directives to select correct implementation at compile time
- Include fallback for unknown architectures
- Maintains full backward compatibility while adding ARM support
- No functionality loss on x86/x64 platforms

* Enhanced ARM CPU detection with proper vendor and model parsing

- Parse /proc/cpuinfo for ARM CPU implementer codes
- Map implementer codes to vendor names (ARM, NVIDIA, Qualcomm, etc.)
- Read device tree for more specific hardware information
- Detect NVIDIA Jetson devices specifically
- Parse CPU part number for model information
- Implement ARM hypervisor detection checking multiple indicators
- Maintains full x86/x64 compatibility with original CPUID implementation

* update .gitignore

* feature: ability to delegate the client signature

* Enable position-independent code (fPIC) for all targets

- Set CMAKE_POSITION_INDEPENDENT_CODE ON globally
- Required for static libraries to be linked into shared libraries
- Enables ASLR for better security
- Fixes potential linker errors on modern Linux systems

* Update license-generator to include parameterized RSA key strength

Updates license-generator submodule pointer from 19666cf to 28ed815
to include the new parameterized RSA key strength implementation.

Changes in license-generator (28ed815):
- Added keyBits parameter to crypto helper functions
- Implemented validation for 1024/2048/3072/4096 bit keys
- Changed default from 1024 to 2048 bits

* Update DEFAULT project to 2048-bit RSA keys

Changed from 1024-bit to 2048-bit for consistency with production keys
and to catch compatibility issues early in development/testing.

Changes:
- Regenerated DEFAULT project with 2048-bit keys using lccgen
- Committed public keys to projects/DEFAULT/include/
- Private key not committed (protected by .gitignore)

Key size: 2048 bits (private_key.rsa = 1675 bytes)
Generated using parameterized crypto_helper with keyBits=2048

* Fix parallel build race condition - add missing project_initialize dependencies

All compilation targets must depend on project_initialize to ensure
project-specific headers (licensecc_properties.h, public_key.h) are
generated before compilation starts.

Changes:
- base: Added add_dependencies(base project_initialize)
- hw_identifier: Added add_dependencies(hw_identifier project_initialize)
- locate: Added add_dependencies(locate project_initialize)

This fixes build failures with make -j when project headers don't exist yet.

Previously only 'os' target had this dependency, causing race conditions
where base/hw_identifier/locate would start compiling before headers were
generated, resulting in 'not declared in this scope' errors.

Fixes Bitbucket pipeline build failures.

* Fix .gitignore to allow DEFAULT project public headers

The .gitignore rule 'projects/*' was preventing Git from checking out
committed DEFAULT project files during 'git submodule update', causing
the pipeline to regenerate headers at build time and hit race conditions.

Changes:
- Added explicit exceptions to allow projects/DEFAULT/include/ files
- Allows licensecc_properties.h and public_key.h to be checked out
- Still blocks private_key.rsa (not in include/ directory)
- Still blocks all other projects (ApraLabsLicensing, etc.)

This ensures the DEFAULT project headers exist before the build starts,
preventing 'not declared in this scope' compilation errors.

Fixes Bitbucket pipeline builds for both x64-linux and arm64-linux.

* Make project_initialize conditional for production builds

- Add LCC_PRODUCTION_BUILD flag to skip key generation
- Production builds use committed keys from LCC_PROJECTS_BASE_DIR
- Remove DEFAULT project files (generated fresh each build)
- Clean up .gitignore DEFAULT allow rules
- Prevents overwriting production public keys when private key absent

Related to production licensing implementation

* Add LCC_PROJECT_MAGIC_VALUE constant to eliminate hardcoding

- Export magic number as LCC_PROJECT_MAGIC_VALUE constant
- Update LCC_VERIFY_MAGIC to use the constant instead of hardcoded value
- Enables DRY principle: single source of truth for magic number

This allows all code to reference the magic number from the header
instead of hardcoding it in multiple places.

Signed-off-by: Akhil Kumar <[email protected]>

* Feature/macos support (#2)

* Add macOS platform support

- Add __APPLE__ check alongside __unix__ in platform detection
- Fixes compilation errors on macOS where windows.h was incorrectly included
- Properly defines DllExport and MAX_PATH for macOS

Files modified:
- include/licensecc/datatypes.h: Add __APPLE__ to Unix-like platform check
- src/library/base/base.h: Add __APPLE__ to Unix-like platform check

This enables licensecc to build on macOS (both x64 and ARM64).

* Add macOS platform detection to remaining files

- src/library/os/network.hpp: Add __APPLE__ check
- src/library/os/os.h: Add __APPLE__ check
- src/library/base/logger.cpp: Add __APPLE__ check (2 locations)

Completes macOS platform support for all platform-specific code paths.

* Add macOS platform support with platform-specific files

- Create macos/ directory with macOS-specific implementations
- Adapt network.cpp to use AF_LINK instead of AF_PACKET for MAC addresses
- Replace mntent-based fstab reading with getfsstat for macOS
- Update CMakeLists.txt to use macOS files when APPLE is defined
- Copy and adapt Linux implementations for cpu_info, dmi_info, execution_environment

---------

Signed-off-by: Akhil Kumar <[email protected]>
Co-authored-by: Akhil Kumar <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant