Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix compiler warnings #31

Merged
merged 1 commit into from
Mar 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on multiple platforms

on: [push, pull_request, workflow_dispatch]
on: [push, workflow_dispatch]

jobs:
build:
Expand Down Expand Up @@ -58,6 +58,7 @@ jobs:
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DCMAKE_C_FLAGS=${{ matrix.c_compiler == 'gcc' && '-Wall -Wundef -Werror' || '' }}
-S ${{ github.workspace }}

- name: Build
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# libaec Changelog
All notable changes to libaec will be documented in this file.

## [1.1.3] - 2024-03-21

### Fixed
- Compiler warnings


## [1.1.2] - 2023-10-04

### Fixed
Expand Down
3 changes: 0 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
cmake_minimum_required(VERSION 3.13...3.19)
project(libaec LANGUAGES C VERSION 1.1.2)

# Automatically export symbols for Windows DLLs
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
Expand Down
2 changes: 1 addition & 1 deletion cmake/config.h.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#cmakedefine WORDS_BIGENDIAN
#cmakedefine01 HAVE_DECL___BUILTIN_CLZLL
#cmakedefine01 HAVE_BSR64
#cmakedefine HAVE_BSR64
#cmakedefine HAVE_SNPRINTF
#cmakedefine HAVE__SNPRINTF
#cmakedefine HAVE__SNPRINTF_S
12 changes: 12 additions & 0 deletions cmake/libaec-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ if (libaec_FOUND)
add_library(libaec::aec STATIC IMPORTED)
else ()
add_library(libaec::aec SHARED IMPORTED)
target_compile_definitions(libaec::aec INTERFACE LIBAEC_SHARED)
if (MSVC)
set_target_properties(libaec::aec PROPERTIES
IMPORTED_IMPLIB "${libaec_LIBRARY}"
)
endif ()
endif ()
set_target_properties(libaec::aec PROPERTIES
IMPORTED_LOCATION "${libaec_LIBRARY}"
Expand All @@ -70,6 +76,12 @@ if (libaec_FOUND)
add_library(libaec::sz STATIC IMPORTED)
else ()
add_library(libaec::sz SHARED IMPORTED)
target_compile_definitions(libaec::sz INTERFACE LIBAEC_SHARED)
if (MSVC)
set_target_properties(libaec::sz PROPERTIES
IMPORTED_IMPLIB "${SZIP_LIBRARY}"
)
endif ()
endif ()
set_target_properties(libaec::sz PROPERTIES
IMPORTED_LOCATION "${SZIP_LIBRARY}"
Expand Down
8 changes: 7 additions & 1 deletion include/libaec.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,14 @@
extern "C"{
#endif

#if BUILDING_LIBAEC && HAVE_VISIBILITY
#if defined LIBAEC_BUILD && HAVE_VISIBILITY
# define LIBAEC_DLL_EXPORTED __attribute__((__visibility__("default")))
#elif (defined _WIN32 && !defined __CYGWIN__) && defined LIBAEC_SHARED
# if defined LIBAEC_BUILD
# define LIBAEC_DLL_EXPORTED __declspec(dllexport)
# else
# define LIBAEC_DLL_EXPORTED __declspec(dllimport)
# endif
#else
# define LIBAEC_DLL_EXPORTED
#endif
Expand Down
20 changes: 12 additions & 8 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ set_target_properties(aec_shared
add_library(sz OBJECT sz_compat.c)
target_link_libraries(sz PUBLIC aec)

set(libaec_COMPILE_DEFINITIONS "LIBAEC_BUILD;LIBAEC_SHARED")

# Create both static and shared szip library.
add_library(sz_static STATIC "$<TARGET_OBJECTS:sz>" "$<TARGET_OBJECTS:aec>")
set_target_properties(sz_static
Expand All @@ -51,16 +53,14 @@ set_target_properties(sz_shared
add_executable(graec graec.c)
target_link_libraries(graec aec)

# Handle visibility of symbols. Compatible with gnulib's gl_VISIBILITY
include(CheckCCompilerFlag)
check_c_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
set(libaec_COMPILE_DEFINITIONS
"${libaec_COMPILE_DEFINITIONS};HAVE_VISIBILITY=$<BOOL:${COMPILER_HAS_HIDDEN_VISIBILITY}>")

include(GNUInstallDirs)
if(UNIX)
# Handle visibility of symbols. Compatible with gnulib's gl_VISIBILITY
include(CheckCCompilerFlag)
check_c_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
set_target_properties(aec sz
PROPERTIES
COMPILE_DEFINITIONS
"HAVE_VISIBILITY=$<BOOL:${COMPILER_HAS_HIDDEN_VISIBILITY}>;BUILDING_LIBAEC")

# The shell scripts for benchmarking are supported on unix only
add_executable(utime EXCLUDE_FROM_ALL utime.c)
target_include_directories(utime PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/..")
Expand All @@ -71,4 +71,8 @@ if(UNIX)
DEPENDS graec utime)
endif()

set_target_properties(aec sz
PROPERTIES
COMPILE_DEFINITIONS "${libaec_COMPILE_DEFINITIONS}")

install(TARGETS aec_static aec_shared sz_static sz_shared)
5 changes: 3 additions & 2 deletions src/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
AUTOMAKE_OPTIONS = no-installman
AM_CFLAGS = $(CFLAG_VISIBILITY)
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include \
-DBUILDING_LIBAEC
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
lib_LTLIBRARIES = libaec.la libsz.la
libaec_la_SOURCES = encode.c encode_accessors.c decode.c vector.c\
encode.h encode_accessors.h decode.h vector.h
libaec_la_CPPFLAGS = $(AM_CPPFLAGS) -DLIBAEC_BUILD
libaec_la_LDFLAGS = -version-info 1:2:1 -no-undefined

libsz_la_SOURCES = sz_compat.c
libsz_la_LIBADD = libaec.la
libsz_la_CPPFLAGS = $(AM_CPPFLAGS) -DLIBAEC_BUILD
libsz_la_LDFLAGS = -version-info 2:1:0 -no-undefined

include_HEADERS = $(top_builddir)/include/libaec.h $(top_srcdir)/include/szlib.h
Expand Down
4 changes: 2 additions & 2 deletions src/decode.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
#include <stdlib.h>
#include <string.h>

#if HAVE_BSR64
#ifdef HAVE_BSR64
#include <intrin.h>
#endif

Expand Down Expand Up @@ -295,7 +295,7 @@ static inline uint32_t direct_get_fs(struct aec_stream *strm)
#endif
#if HAVE_DECL___BUILTIN_CLZLL || __has_builtin(__builtin_clzll)
int i = 63 - __builtin_clzll(state->acc);
#elif HAVE_BSR64
#elif defined HAVE_BSR64
unsigned long i;
_BitScanReverse64(&i, state->acc);
#else
Expand Down
3 changes: 1 addition & 2 deletions src/encode.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ static uint32_t assess_splitting_option(struct aec_stream *strm)
struct internal_state *state = strm->state;

/* Block size of current block */
int this_bs = strm->block_size - state->ref;
uint64_t this_bs = strm->block_size - state->ref;

/* CDS length minimum so far */
uint64_t len_min = UINT64_MAX;
Expand Down Expand Up @@ -890,7 +890,6 @@ int aec_encode_init(struct aec_stream *strm)
*state->cds = 0;
state->bits = 8;
state->mode = m_get_block;
struct vector_t *offsets = NULL;
state->ready_to_capture_rsi = 0;
return AEC_OK;
}
Expand Down
4 changes: 2 additions & 2 deletions src/sz_compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static int bits_to_bytes(int bit_length)
}

static void interleave_buffer(void *dest, const void *src,
size_t n, int wordsize)
size_t n, size_t wordsize)
{
const unsigned char *src8 = (unsigned char *)src;
unsigned char *dest8 = (unsigned char *)dest;
Expand All @@ -82,7 +82,7 @@ static void interleave_buffer(void *dest, const void *src,
}

static void deinterleave_buffer(void *dest, const void *src,
size_t n, int wordsize)
size_t n, size_t wordsize)
{
const unsigned char *src8 = (unsigned char *)src;
unsigned char *dest8 = (unsigned char *)dest;
Expand Down
2 changes: 1 addition & 1 deletion src/vector.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include <libaec.h>
#include "config.h"
#include <stdlib.h>

struct vector_t {
Expand Down
32 changes: 3 additions & 29 deletions tests/check_rsi_block_access.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,22 +112,6 @@ static void data_generator_incr(struct aec_context *ctx)
}
}

static void ctx_init(struct aec_context *ctx)
{
ctx->nvalues = 0;
ctx->flags = 0;
ctx->rsi = 0;
ctx->block_size = 0;
ctx->bits_per_sample = 0;
ctx->obuf = NULL;
ctx->ebuf = NULL;
ctx->dbuf = NULL;
ctx->obuf_len = 0;
ctx->ebuf_len = 0;
ctx->dbuf_len = 0;
ctx->ebuf_total = 0;
}

#define PREPARE_ENCODE(strm_e, ctx, flags) \
{ \
(strm_e)->flags = flags; \
Expand Down Expand Up @@ -239,7 +223,6 @@ static int test_rsi_at(struct aec_context *ctx)
{
int status = AEC_OK;
int flags = ctx->flags;
unsigned short *obuf = (unsigned short*) ctx->obuf;

struct aec_stream strm_encode;
PREPARE_ENCODE(&strm_encode, ctx, flags);
Expand All @@ -256,7 +239,7 @@ static int test_rsi_at(struct aec_context *ctx)
exit(1);
}

for (int i = 0; i < offsets_count; ++i) {
for (size_t i = 0; i < offsets_count; ++i) {
struct aec_stream strm_at;
strm_at.flags = flags;
strm_at.rsi = ctx->rsi;
Expand All @@ -270,8 +253,8 @@ static int test_rsi_at(struct aec_context *ctx)
if ((status = aec_rsi_at(&strm_at, offsets, offsets_count, i)) != AEC_OK) {
return status;
}
for (int j = 0; j < strm_at.total_out; j++) {
if (j == ctx->rsi * ctx->block_size * ctx->bytes_per_sample + j > ctx->obuf_len) {
for (size_t j = 0; j < strm_at.total_out; j++) {
if (j == (ctx->rsi * ctx->block_size * ctx->bytes_per_sample + j > ctx->obuf_len)) {
break;
}
if (rsi_buf[j] != ctx->obuf[i * ctx->block_size * ctx->rsi * ctx->bytes_per_sample + j]) {
Expand All @@ -297,11 +280,6 @@ int test_read(struct aec_context *ctx)
size_t *offsets = NULL;
size_t offsets_size = 0;
PREPARE_DECODE_WITH_OFFSETS(&strm_decode, ctx, flags, offsets, &offsets_size);

size_t rsi_len = ctx->rsi * ctx->block_size * ctx->bytes_per_sample;
unsigned rsi_n = ctx->obuf_len / (ctx->rsi * ctx->block_size); // Number of full rsi blocks
unsigned rsi_r = ctx->obuf_len % (ctx->rsi * ctx->block_size); // Remainder

// Edge case: Imposible to get wanted number of slices
size_t wanted_num_slices = 3;
if (wanted_num_slices > ctx->obuf_len) {
Expand Down Expand Up @@ -340,7 +318,6 @@ int test_read(struct aec_context *ctx)

if ((status = aec_decode_init(&strm_read)) != AEC_OK)
return status;
struct internal_state *state = strm_read.state;

// Test 1: Stream data
for (size_t i = 0; i < num_slices; ++i) {
Expand All @@ -360,7 +337,6 @@ int test_read(struct aec_context *ctx)

// Test 2: Read slices
for (size_t i = 0; i < num_slices; ++i) {
struct internal_state *state = strm_read.state;
size_t buf_size = slice_sizes[i];;
unsigned char *buf = malloc(buf_size);
if (buf == NULL) {
Expand Down Expand Up @@ -413,8 +389,6 @@ int test_offsets(struct aec_context *ctx)
return 102;
}

size_t size = decode_offsets_size > 10 ? 10 : decode_offsets_size;

for (size_t i = 0; i < encode_offsets_size; ++i) {
if (encode_offsets_ptr[i] != decode_offsets_ptr[i]) {
fprintf(stderr, "Error: encode_offsets_ptr[%zu] = %zu, decode_offsets_ptr[%zu] = %zu\n", i, encode_offsets_ptr[i], i, decode_offsets_ptr[i]);
Expand Down
2 changes: 1 addition & 1 deletion tests/check_seeking.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void shift_cdata(struct test_state *state, unsigned char *cbuf_unshifted,
unsigned char *dst = state->cbuf + byte_offset;

memset(state->cbuf, 0, state->buf_len);
for (int i = 0; i < strm->avail_in; i++) {
for (size_t i = 0; i < strm->avail_in; i++) {
dst[i] |= cbuf_unshifted[i] >> bit_offset;
dst[i + 1] |= cbuf_unshifted[i] << (8 - bit_offset);
}
Expand Down
Loading