Skip to content

Commit

Permalink
Fix shared builds, and test them with CI (#575)
Browse files Browse the repository at this point in the history
* cleanup of workflow, test latest w3emc version

* adding shared CI build

* removed STATIC from CMakeLists.txt file

* trying to fix shared library builds

* trying to fix shared library builds
  • Loading branch information
edwardhartnett authored Oct 3, 2023
1 parent d6db933 commit d82d39e
Show file tree
Hide file tree
Showing 3 changed files with 185 additions and 13 deletions.
11 changes: 1 addition & 10 deletions .github/workflows/Linux_options.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,17 @@ jobs:
# fail-fast: true
matrix:
bacio-version: [2.6.0]
w3emc-version: [2.10.0]
w3emc-version: [2.10.0, 2.11.0]
config:
- {
options: "-DCMAKE_BUILD_TYPE=Debug"
}
- {
options: '-DCMAKE_C_Fortran_FLAGS="-g" -DLOGGING=ON'
}
- {
options: "-DCMAKE_BUILD_TYPE=Debug"
}
- {
options: "-DBUILD_WITH_W3EMC=OFF"
}
- {
options: "-DBUILD_WITH_W3EMC=OFF -DCMAKE_BUILD_TYPE=Debug"
}
- {
options: "-DENABLE_SHARED=ON"
}

steps:

Expand Down
175 changes: 175 additions & 0 deletions .github/workflows/Linux_shared.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# This is a GitHub actions workflow for NCEPLIBS-g2.
#
# This builds the develop branch different options for shared library builds.
#
# Ed Hartnett, 10/2/23
name: Linux_shared
on:
push:
branches:
- develop
pull_request:
branches:
- develop

jobs:
Linux_shared:
runs-on: ubuntu-latest
env:
FC: gfortran
CC: gcc
LD_LIBRARY_PATH: /home/runner/jasper/lib
strategy:
fail-fast: true
matrix:
bacio-version: [2.6.0]
w3emc-version: [2.11.0]
config:
- {
options: "-DCMAKE_BUILD_TYPE=Debug"
}
- {
options: "-DBUILD_WITH_W3EMC=OFF"
}
- {
options: "-DBUILD_WITH_W3EMC=OFF -DCMAKE_BUILD_TYPE=Debug"
}

steps:

- name: install-dependencies
run: |
sudo apt-get update
sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev
- name: cache-bacio
id: cache-bacio
uses: actions/cache@v3
with:
path: ~/bacio
key: bacio-${{ runner.os }}-${{ matrix.bacio-version }}-shared

- name: checkout-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: NOAA-EMC/NCEPLIBS-bacio
path: bacio
ref: v${{ matrix.bacio-version }}

- name: build-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
run: |
cd bacio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/bacio -DBUILD_SHARED_LIBS=ON ..
make -j2
make install
- name: cache-w3emc
id: cache-w3emc
uses: actions/cache@v3
with:
path: ~/w3emc
key: w3emc-${{ runner.os }}-${{ matrix.w3emc-version }}-${{ matrix.bacio-version }}-shared

- name: checkout-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: NOAA-EMC/NCEPLIBS-w3emc
path: w3emc
ref: v${{ matrix.w3emc-version }}

- name: build-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
run: |
cd w3emc
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=~/bacio -DCMAKE_INSTALL_PREFIX=~/w3emc -DBUILD_WITH_BUFR=OFF -DENABLE_SHARED=ON -DBUILD_WITH_EXTRA_DEPS=OFF ..
make -j2
make install
- name: cache-jasper
id: cache-jasper
uses: actions/cache@v3
with:
path: ~/jasper
key: jasper-${{ runner.os }}-4.0.0-shared

- name: checkout-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: jasper-software/jasper
path: jasper
ref: version-4.0.0

- name: build-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
run: |
cd jasper
mkdir build-jasper && cd build-jasper
cmake -DCMAKE_INSTALL_PREFIX=~/jasper -DENABLE_SHARED=ON ..
make -j2
make install
- name: checkout-g2c
uses: actions/checkout@v3
with:
repository: NOAA-EMC/NCEPLIBS-g2c
path: g2c
ref: develop

- name: build-g2c
run: |
cd g2c
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper -DENABLE_SHARED=ON ..
make -j2
make install
- name: checkout
uses: actions/checkout@v3
with:
path: g2

- name: cache-data
id: cache-data
uses: actions/cache@v3
with:
path: ~/data
key: data-4

- name: build
run: |
set -x
cd g2
mkdir build
cd build
cmake ${{ matrix.config.options }} -DCMAKE_PREFIX_PATH="~/jasper;~/g2c;~/bacio;~/w3emc" -DCMAKE_INSTALL_PREFIX="~/g2/install" -DFTP_TEST_FILES=ON -DTEST_FILE_DIR=/home/runner/data -DBUILD_SHARED_LIBS=ON ..
make -j2 VERBOSE=1
- name: cache-data
if: steps.cache-data.outputs.cache-hit != 'true'
run: |
mkdir ~/data
cp $GITHUB_WORKSPACE/g2/build/tests/data/* ~/data
- name: test
run: |
cd $GITHUB_WORKSPACE/g2/build
ctest --verbose --rerun-failed --output-on-failure
- name: check_install
run: |
cd $GITHUB_WORKSPACE/g2/build
make install
ls -l ~/g2/install/lib/lib*.so || exit 1
12 changes: 9 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ if (BUILD_WITH_W3EMC)
endif()

# These are the C source files.
set(c_src dec_jpeg2000.c dec_png.c enc_jpeg2000.c enc_png.c mova2i.c)
set(c_src dec_png.c enc_png.c mova2i.c)

# Create this fortran file, which has the contents of the VERSION file
# substituted in.
Expand All @@ -41,7 +41,10 @@ foreach(kind ${kinds})
"${fortran_${kind}_flags}")
set_target_properties(${lib_name}_f PROPERTIES Fortran_MODULE_DIRECTORY
${module_dir})

if(BUILD_SHARED_LIBS)
set_property(TARGET ${lib_name}_f PROPERTY POSITION_INDEPENDENT_CODE 1)
endif()

# Set preprocessor define so code can know what kind of library is
# being built.
target_compile_definitions(${lib_name}_f PUBLIC KIND=${kind})
Expand All @@ -50,9 +53,12 @@ foreach(kind ${kinds})
add_library(${lib_name}_c OBJECT ${c_src})
target_include_directories(${lib_name}_c PRIVATE ${JASPER_INCLUDE_DIR})
target_link_libraries(${lib_name}_c PRIVATE PNG::PNG)
if(BUILD_SHARED_LIBS)
set_property(TARGET ${lib_name}_c PROPERTY POSITION_INDEPENDENT_CODE 1)
endif()

# Assemble the library.
add_library(${lib_name} STATIC $<TARGET_OBJECTS:${lib_name}_f> $<TARGET_OBJECTS:${lib_name}_c>)
add_library(${lib_name} $<TARGET_OBJECTS:${lib_name}_f> $<TARGET_OBJECTS:${lib_name}_c>)

# Link to bacio, and jasper always.
target_link_libraries(${lib_name} PUBLIC bacio::bacio ${PNG_LIBRARIES} ${JASPER_LIBRARIES})
Expand Down

0 comments on commit d82d39e

Please sign in to comment.