mwalib 2.0.3

A library to simplify reading Murchison Widefield Array (MWA) raw visibilities, voltages and metadata.
Documentation

cmake_minimum_required(VERSION 3.16)
project(mwalib_c_examples C)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
  "Debug;Release;RelWithDebInfo;MinSizeRel")

set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} -g")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")

# Paths
set(MWALIB_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../include")
set(MWALIB_LIBRARY_DIR_DEBUG   "../../target/debug")
set(MWALIB_LIBRARY_DIR_RELEASE "../../target/release")

# Define imported library with per-config artifacts
add_library(mwalib SHARED IMPORTED GLOBAL) # or SHARED if you have .so/.dylib
set_target_properties(mwalib PROPERTIES
  IMPORTED_LOCATION_DEBUG   "${MWALIB_LIBRARY_DIR_DEBUG}/libmwalib.a"   # or .so/.dylib
  IMPORTED_LOCATION_RELEASE "${MWALIB_LIBRARY_DIR_RELEASE}/libmwalib.a" # 
  INTERFACE_INCLUDE_DIRECTORIES "${MWALIB_INCLUDE_DIR}"
)

# Common system libs (portable alternative uses Threads::Threads)
add_library(common_system_libs INTERFACE)
target_link_libraries(common_system_libs INTERFACE m pthread dl)

# Binaries
add_executable(mwalib-print-context              mwalib-print-context.c)
add_executable(mwalib-print-volt-context         mwalib-print-volt-context.c)
add_executable(mwalib-sum-all-hdus               mwalib-sum-all-hdus.c)
add_executable(mwalib-sum-vcs                    mwalib-sum-vcs.c)

# Link to imported mwalib target + system libs
target_link_libraries(mwalib-print-context      PRIVATE mwalib common_system_libs)
target_link_libraries(mwalib-print-volt-context PRIVATE mwalib common_system_libs)
target_link_libraries(mwalib-sum-all-hdus       PRIVATE mwalib common_system_libs)
target_link_libraries(mwalib-sum-vcs            PRIVATE mwalib common_system_libs)