Use CMake to build the plugin and HDF5 (internally)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.19)
|
||||
|
||||
PROJECT(durin VERSION 1.0.0 LANGUAGES C)
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-O3")
|
||||
|
||||
SET(CMAKE_C_STANDARD 99)
|
||||
SET(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
SET(CMAKE_C_EXTENSIONS OFF)
|
||||
|
||||
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
SET(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
set(HDF5_USE_STATIC_LIBRARIES TRUE)
|
||||
|
||||
SET(HDF5_BUILD_HL_LIB OFF)
|
||||
|
||||
SET(HDF5_ENABLE_THREADSAFE ON)
|
||||
SET(HDF5_ENABLE_SZIP_SUPPORT OFF)
|
||||
SET(HDF5_ENABLE_SZIP_ENCODING OFF)
|
||||
SET(HDF5_BUILD_EXAMPLES OFF)
|
||||
SET(HDF5_BUILD_CPP_LIB OFF)
|
||||
SET(HDF5_ENABLE_Z_LIB_SUPPORT OFF)
|
||||
SET(HDF5_EXTERNALLY_CONFIGURED 1)
|
||||
|
||||
INCLUDE_DIRECTORIES(bslz4/src)
|
||||
|
||||
FetchContent_Declare(hdf5
|
||||
URL https://github.com/HDFGroup/hdf5/releases/download/hdf5_1.14.6/hdf5-1.14.6.tar.gz
|
||||
DOWNLOAD_EXTRACT_TIMESTAMP FALSE
|
||||
EXCLUDE_FROM_ALL)
|
||||
|
||||
FetchContent_MakeAvailable(hdf5)
|
||||
|
||||
ADD_LIBRARY(durin-plugin SHARED
|
||||
src/plugin.c src/plugin.h
|
||||
src/err.c src/err.h
|
||||
src/filters.c src/filters.h
|
||||
src/file.c src/file.h bslz4/src/bitshuffle.c bslz4/src/bitshuffle.h
|
||||
bslz4/src/bitshuffle_core.c bslz4/src/bitshuffle_core.h
|
||||
bslz4/src/bitshuffle_internals.h
|
||||
bslz4/src/bshuf_h5filter.c bslz4/src/bshuf_h5filter.h
|
||||
bslz4/src/iochain.c bslz4/src/iochain.h
|
||||
bslz4/src/lz4.c bslz4/src/lz4.h)
|
||||
|
||||
TARGET_COMPILE_DEFINITIONS(durin-plugin PRIVATE
|
||||
H5_USE_110_API
|
||||
USE_BITSHUFFLE)
|
||||
|
||||
TARGET_LINK_LIBRARIES(durin-plugin PRIVATE hdf5-static)
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
FROM registry.access.redhat.com/ubi7/ubi
|
||||
|
||||
ARG HDF5_TAG="hdf5_1.14.6"
|
||||
|
||||
LABEL authors="Filip Leonarski"
|
||||
|
||||
ARG CMAKE_VERSION=3.31.6
|
||||
|
||||
RUN yum -y update && \
|
||||
yum -y install \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
git \
|
||||
make \
|
||||
tar \
|
||||
gzip \
|
||||
curl && \
|
||||
yum clean all
|
||||
|
||||
RUN set -eux; \
|
||||
arch="$(uname -m)"; \
|
||||
case "$arch" in \
|
||||
x86_64) cmake_arch="x86_64" ;; \
|
||||
aarch64) cmake_arch="aarch64" ;; \
|
||||
*) echo "Unsupported architecture: $arch"; exit 1 ;; \
|
||||
esac; \
|
||||
curl -L "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-${cmake_arch}.tar.gz" \
|
||||
-o /tmp/cmake.tar.gz; \
|
||||
tar -xzf /tmp/cmake.tar.gz -C /opt; \
|
||||
ln -s "/opt/cmake-${CMAKE_VERSION}-linux-${cmake_arch}/bin/cmake" /usr/local/bin/cmake; \
|
||||
ln -s "/opt/cmake-${CMAKE_VERSION}-linux-${cmake_arch}/bin/ctest" /usr/local/bin/ctest; \
|
||||
ln -s "/opt/cmake-${CMAKE_VERSION}-linux-${cmake_arch}/bin/cpack" /usr/local/bin/cpack; \
|
||||
rm -f /tmp/cmake.tar.gz
|
||||
|
||||
# Default entrypoint prints tool versions and hints.
|
||||
CMD ["/bin/bash", "-l"]
|
||||
@@ -1,56 +0,0 @@
|
||||
BUILD_DIR ?= ./build
|
||||
SRC_DIR = ./src
|
||||
TEST_DIR = ./test
|
||||
INC_DIR = $(SRC_DIR)
|
||||
|
||||
BSLZ4_SRC_DIR = ./bslz4/src
|
||||
BSLZ4_BUILD_DIR = ./bslz4/build
|
||||
BSLZ4_INC_DIR = $(BSLZ4_SRC_DIR)
|
||||
|
||||
CC=h5cc
|
||||
# -std=gnu99 provides for strtok_r
|
||||
CFLAGS=-DH5_USE_110_API -Wall -g -O2 -fpic -I$(INC_DIR) -I$(BSLZ4_INC_DIR) -std=gnu99 -shlib -DUSE_BITSHUFFLE
|
||||
|
||||
.PHONY: plugin
|
||||
plugin: $(BUILD_DIR)/durin-plugin.so
|
||||
|
||||
.PHONY: all
|
||||
all: plugin example test_plugin
|
||||
|
||||
.PHONY: example
|
||||
example: $(BUILD_DIR)/example
|
||||
|
||||
.PHONY: test_plugin
|
||||
test_plugin: $(BUILD_DIR)/test_plugin
|
||||
|
||||
$(BUILD_DIR)/test_plugin: $(TEST_DIR)/generic_data_plugin.f90 $(TEST_DIR)/test_generic_host.f90
|
||||
mkdir -p $(BUILD_DIR)
|
||||
gfortran -O -g -fopenmp -ldl $(TEST_DIR)/generic_data_plugin.f90 $(TEST_DIR)/test_generic_host.f90 -o $@ -J$(BUILD_DIR)
|
||||
|
||||
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
|
||||
mkdir -p $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(BSLZ4_BUILD_DIR)/%.o: $(BSLZ4_SRC_DIR)/%.c
|
||||
mkdir -p $(BSLZ4_BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(BUILD_DIR)/bslz4.a: $(BSLZ4_BUILD_DIR)/lz4.o $(BSLZ4_BUILD_DIR)/bitshuffle.o \
|
||||
$(BSLZ4_BUILD_DIR)/bitshuffle_core.o $(BSLZ4_BUILD_DIR)/iochain.o $(BSLZ4_BUILD_DIR)/bshuf_h5filter.o
|
||||
mkdir -p $(BUILD_DIR)
|
||||
ar rcs $@ $^
|
||||
|
||||
$(BUILD_DIR)/durin-plugin.so: $(BUILD_DIR)/plugin.o $(BUILD_DIR)/file.o $(BUILD_DIR)/err.o $(BUILD_DIR)/filters.o $(BITSHUFFLE_OBJS) \
|
||||
$(BUILD_DIR)/bslz4.a
|
||||
mkdir -p $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -shared -noshlib $^ -o $(BUILD_DIR)/durin-plugin.so
|
||||
|
||||
$(BUILD_DIR)/example: $(BUILD_DIR)/test.o $(BUILD_DIR)/file.o $(BUILD_DIR)/err.o $(BUILD_DIR)/filters.o \
|
||||
$(BUILD_DIR)/bslz4.a
|
||||
mkdir -p $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) $^ -o $(BUILD_DIR)/example
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -r $(BUILD_DIR)
|
||||
rm -r $(BSLZ4_BUILD_DIR)
|
||||
Reference in New Issue
Block a user