Skip to content

Commit c9b7bbb

Browse files
authored
Enable shared libraries in CMake configuration
Updated CMake configuration to enable shared libraries and adjusted file copy commands to preserve symlinks.
1 parent 898a1a8 commit c9b7bbb

1 file changed

Lines changed: 28 additions & 31 deletions

File tree

.github/workflows/build.yml

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,15 @@ jobs:
108108
- name: Configure build (Linux)
109109
if: matrix.platform == 'linux'
110110
run: |
111-
cmake -B build -DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF
111+
cmake -B build -DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF -DENABLE_SHARED_LIB=ON
112112
113113
- name: Configure build (macOS)
114114
if: matrix.platform == 'macos'
115115
run: |
116116
if [ "${{ matrix.arch }}" = "arm64" ]; then
117-
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64
117+
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_SHARED_LIB=ON
118118
else
119-
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64
119+
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_SHARED_LIB=ON
120120
fi
121121
122122
- name: Configure build (Windows)
@@ -126,7 +126,8 @@ jobs:
126126
-DLIBUSB_INCLUDE_DIR="$PWD\deps\libusb\include\libusb-1.0" `
127127
-DLIBUSB_LIBRARIES="$PWD\deps\libusb\MS64\dll\libusb-1.0.lib" `
128128
-DTHREADS_PTHREADS_INCLUDE_DIR="$PWD\deps\pthreads\include" `
129-
-DTHREADS_PTHREADS_WIN32_LIBRARY="$PWD\deps\pthreads\lib\x64\pthreadVC2.lib"
129+
-DTHREADS_PTHREADS_WIN32_LIBRARY="$PWD\deps\pthreads\lib\x64\pthreadVC2.lib" `
130+
-DENABLE_SHARED_LIB=ON
130131
131132
# === Build ===
132133
- name: Build (Linux/macOS)
@@ -150,15 +151,15 @@ jobs:
150151
run: |
151152
ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
152153
mkdir -p "$ARTIFACT_DIR"
153-
cp build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
154+
cp -a build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
154155
cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/"
155156
156157
- name: Package artifacts (macOS)
157158
if: matrix.platform == 'macos'
158159
run: |
159160
ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
160161
mkdir -p "$ARTIFACT_DIR"
161-
cp build/libhydrasdr/src/libhydrasdr.dylib* "$ARTIFACT_DIR/" 2>/dev/null || true
162+
cp -a build/libhydrasdr/src/libhydrasdr.dylib* "$ARTIFACT_DIR/" 2>/dev/null || true
162163
cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/" 2>/dev/null || true
163164
164165
- name: Package artifacts (Windows)
@@ -192,8 +193,8 @@ jobs:
192193
mkdir -p "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}"
193194
mkdir -p "${PACKAGE_DIR}/etc/udev/rules.d"
194195
195-
# Copy binaries and libraries
196-
cp build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
196+
# Copy binaries and libraries (use cp -a to preserve symlinks)
197+
cp -a build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
197198
cp build/hydrasdr-tools/src/hydrasdr_* "${PACKAGE_DIR}/usr/bin/"
198199
199200
# Copy udev rules file from repository
@@ -208,6 +209,7 @@ jobs:
208209
Architecture: ${ARCH}
209210
Depends: libusb-1.0-0 (>= 1.0.20)
210211
Maintainer: ${{ env.MAINTAINER }}
212+
Homepage: ${{ env.HOMEPAGE }}
211213
Description: HydraSDR RFOne Host Tools and Libraries
212214
Host tools and shared libraries for HydraSDR RFOne software-defined radio.
213215
Provides command-line utilities and development libraries for interfacing
@@ -216,10 +218,7 @@ jobs:
216218
This package includes:
217219
- libhydrasdr shared library
218220
- Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
219-
- Development headers and pkg-config files
220-
.
221-
Built for: ${{ matrix.name }}
222-
Homepage: ${{ env.HOMEPAGE }}
221+
- udev rules for non-root device access
223222
EOF
224223
225224
# Create maintenance scripts
@@ -273,7 +272,7 @@ jobs:
273272
# Set permissions
274273
find "${PACKAGE_DIR}" -type d -exec chmod 755 {} \;
275274
find "${PACKAGE_DIR}/usr/bin" -type f -exec chmod 755 {} \;
276-
find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -exec chmod 644 {} \;
275+
find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -type f -exec chmod 644 {} \;
277276
chmod 644 "${PACKAGE_DIR}/etc/udev/rules.d/51-hydrasdr.rules"
278277
279278
# Build package
@@ -519,7 +518,7 @@ jobs:
519518
# === Build Configuration ===
520519
- name: Configure build
521520
run: |
522-
CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF"
521+
CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF -DENABLE_SHARED_LIB=ON"
523522
524523
# Add extra configuration if specified
525524
if [ -n "${{ matrix.extra_config }}" ]; then
@@ -557,7 +556,7 @@ jobs:
557556
run: |
558557
ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
559558
mkdir -p "$ARTIFACT_DIR"
560-
cp build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
559+
cp -a build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
561560
cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/"
562561
563562
# === Create .deb package for Debian/Ubuntu/Linux Mint ===
@@ -586,8 +585,8 @@ jobs:
586585
mkdir -p "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}"
587586
mkdir -p "${PACKAGE_DIR}/etc/udev/rules.d"
588587
589-
# Copy binaries and libraries
590-
cp build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
588+
# Copy binaries and libraries (use cp -a to preserve symlinks)
589+
cp -a build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
591590
cp build/hydrasdr-tools/src/hydrasdr_* "${PACKAGE_DIR}/usr/bin/"
592591
593592
# Copy udev rules file from repository
@@ -602,6 +601,7 @@ jobs:
602601
Architecture: ${ARCH}
603602
Depends: libusb-1.0-0 (>= 1.0.20)
604603
Maintainer: ${{ env.MAINTAINER }}
604+
Homepage: ${{ env.HOMEPAGE }}
605605
Description: HydraSDR RFOne Host Tools and Libraries (${DIST_DESC})
606606
Host tools and shared libraries for HydraSDR RFOne software-defined radio.
607607
Provides command-line utilities and development libraries for interfacing
@@ -610,10 +610,7 @@ jobs:
610610
This package includes:
611611
- libhydrasdr shared library
612612
- Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
613-
- Development headers and pkg-config files
614-
.
615-
Built for: ${{ matrix.name }}
616-
Homepage: ${{ env.HOMEPAGE }}
613+
- udev rules for non-root device access
617614
EOF
618615
619616
# Create maintenance scripts
@@ -664,10 +661,10 @@ jobs:
664661
665662
gzip -9 "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}/changelog.Debian"
666663
667-
# Set permissions
664+
# Set permissions (use -type f to only chmod actual files, not symlinks)
668665
find "${PACKAGE_DIR}" -type d -exec chmod 755 {} \;
669666
find "${PACKAGE_DIR}/usr/bin" -type f -exec chmod 755 {} \;
670-
find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -exec chmod 644 {} \;
667+
find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -type f -exec chmod 644 {} \;
671668
chmod 644 "${PACKAGE_DIR}/etc/udev/rules.d/51-hydrasdr.rules"
672669
673670
# Build and verify package
@@ -725,14 +722,14 @@ jobs:
725722
This package includes:
726723
- libhydrasdr shared library
727724
- Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
728-
- Development headers and pkg-config files
725+
- udev rules for non-root device access
729726
730727
Built for: ${{ matrix.name }}
731728
732729
%prep
733730
# Copy source files to build directory
734731
mkdir -p %{_builddir}/%{name}-%{version}
735-
cp -r %{_sourcedir}/* %{_builddir}/%{name}-%{version}/
732+
cp -a %{_sourcedir}/* %{_builddir}/%{name}-%{version}/
736733
737734
%build
738735
# Files already built, just verify they exist
@@ -747,8 +744,8 @@ jobs:
747744
mkdir -p %{buildroot}/usr/bin
748745
mkdir -p %{buildroot}/etc/udev/rules.d
749746
750-
# Copy files from build directory
751-
cp %{_builddir}/%{name}-%{version}/build/libhydrasdr/src/libhydrasdr.so* %{buildroot}/usr/lib/ || true
747+
# Copy files from build directory (use cp -a to preserve symlinks)
748+
cp -a %{_builddir}/%{name}-%{version}/build/libhydrasdr/src/libhydrasdr.so* %{buildroot}/usr/lib/ || true
752749
cp %{_builddir}/%{name}-%{version}/build/hydrasdr-tools/src/hydrasdr_* %{buildroot}/usr/bin/
753750
cp %{_builddir}/%{name}-%{version}/hydrasdr-tools/51-hydrasdr.rules %{buildroot}/etc/udev/rules.d/51-hydrasdr.rules
754751
@@ -828,8 +825,8 @@ jobs:
828825
- Built from commit ${{ github.sha }}
829826
EOF
830827
831-
# Copy source files to SOURCES directory
832-
cp -r . ~/rpmbuild/SOURCES/
828+
# Copy source files to SOURCES directory (use cp -a to preserve symlinks)
829+
cp -a . ~/rpmbuild/SOURCES/
833830
834831
# Build the RPM package
835832
rpmbuild -bb ~/rpmbuild/SPECS/${{ env.PACKAGE_NAME }}.spec \
@@ -903,8 +900,8 @@ jobs:
903900
mkdir -p "${pkgdir}/etc/udev/rules.d"
904901
mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
905902
906-
# Copy files from build directory (using absolute path from original location)
907-
cp {{ ORIGINAL_DIR }}/build/libhydrasdr/src/libhydrasdr.so* "${pkgdir}/usr/lib/" || true
903+
# Copy files from build directory (using absolute path from original location, use cp -a for symlinks)
904+
cp -a {{ ORIGINAL_DIR }}/build/libhydrasdr/src/libhydrasdr.so* "${pkgdir}/usr/lib/" || true
908905
cp {{ ORIGINAL_DIR }}/build/hydrasdr-tools/src/hydrasdr_* "${pkgdir}/usr/bin/"
909906
cp {{ ORIGINAL_DIR }}/hydrasdr-tools/51-hydrasdr.rules "${pkgdir}/etc/udev/rules.d/51-hydrasdr.rules"
910907

0 commit comments

Comments
 (0)