Skip to content
Open
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
426 changes: 278 additions & 148 deletions CMakeLists.txt

Large diffs are not rendered by default.

85 changes: 29 additions & 56 deletions binaries/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,60 +1,33 @@


add_executable(fits_replace_nans
Replace_NaNs.cc
)
target_include_directories(fits_replace_nans
SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(fits_replace_nans
ygor
m
Threads::Threads
)

add_executable(twot_pvalue
TwoT_PValue.cc
)
target_include_directories(twot_pvalue
SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(twot_pvalue
ygor
m
Threads::Threads
)

add_executable(regex_tester
Regex_Tester.cc
)
target_include_directories(regex_tester
SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(regex_tester
ygor
m
Threads::Threads
)

add_executable(parse_TAR_files
Parse_TAR_Files.cc
)
target_include_directories(parse_TAR_files
SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(parse_TAR_files
ygor
m
Threads::Threads
)

install(TARGETS fits_replace_nans
twot_pvalue
regex_tester
parse_TAR_files
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
# Helper function to create a binary target
function(ygor_add_executable target_name source_file)
add_executable(${target_name} ${source_file})

target_link_libraries(${target_name}
PRIVATE
Ygor::ygor
)

set_target_properties(${target_name} PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
endfunction()

# Create executables
ygor_add_executable(fits_replace_nans Replace_NaNs.cc)
ygor_add_executable(twot_pvalue TwoT_PValue.cc)
ygor_add_executable(regex_tester Regex_Tester.cc)
ygor_add_executable(parse_TAR_files Parse_TAR_Files.cc)

# Install targets
install(TARGETS
fits_replace_nans
twot_pvalue
regex_tester
parse_TAR_files
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)


41 changes: 41 additions & 0 deletions cmake/YgorConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
@PACKAGE_INIT@

include(CMakeFindDependencyMacro)

# Required dependencies
find_dependency(Threads)

# Optional dependencies based on build configuration
set(YGOR_WITH_BOOST @WITH_BOOST@)
set(YGOR_WITH_EIGEN @WITH_EIGEN@)
set(YGOR_WITH_GNU_GSL @WITH_GNU_GSL@)
set(YGOR_WITH_LINUX_SYS @WITH_LINUX_SYS@)

if(YGOR_WITH_BOOST)
find_dependency(Boost)
endif()

if(YGOR_WITH_EIGEN)
find_dependency(Eigen3 3.3 CONFIG QUIET)
if(NOT TARGET Eigen3::Eigen)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(EIGEN3 QUIET eigen3)
endif()
endif()
endif()

if(YGOR_WITH_GNU_GSL)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(GNU_GSL QUIET gsl)
endif()
if(NOT GNU_GSL_FOUND)
find_dependency(GSL QUIET)
endif()
endif()

# Include the targets file
include("${CMAKE_CURRENT_LIST_DIR}/YgorTargets.cmake")

check_required_components(Ygor)
27 changes: 27 additions & 0 deletions cmake/toolchains/aarch64-linux-gnu.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Example CMake toolchain file for cross-compiling to ARM64/aarch64
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/aarch64-linux-gnu.cmake ..
#
# Prerequisites:
# - aarch64-linux-gnu cross-compiler
# - Cross-compiled dependencies

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

# Cross-compiler
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

# Target environment
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)

# Search paths
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# Architecture flag for aarch64
set(CMAKE_CXX_FLAGS_INIT "-mcpu=generic")
27 changes: 27 additions & 0 deletions cmake/toolchains/armv7-linux-gnueabihf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Example CMake toolchain file for cross-compiling to ARMv7 (hard float)
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/armv7-linux-gnueabihf.cmake ..
#
# Prerequisites:
# - arm-linux-gnueabihf cross-compiler
# - Cross-compiled dependencies

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

# Cross-compiler
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

# Target environment
set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf)

# Search paths
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# Architecture flag for ARMv7
set(CMAKE_CXX_FLAGS_INIT "-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard")
34 changes: 34 additions & 0 deletions cmake/toolchains/macos-x86_64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Example CMake toolchain file for cross-compiling to macOS (osxcross)
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/macos-x86_64.cmake ..
#
# Prerequisites:
# - osxcross toolchain (https://github.com/tpoechtrager/osxcross)
# - Cross-compiled dependencies

set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR x86_64)

# Adjust these paths based on your osxcross installation
set(OSXCROSS_ROOT "$ENV{HOME}/osxcross" CACHE PATH "Path to osxcross installation")
set(OSXCROSS_TARGET "darwin20.4" CACHE STRING "osxcross target")

# Cross-compiler
set(CMAKE_C_COMPILER "${OSXCROSS_ROOT}/bin/x86_64-apple-${OSXCROSS_TARGET}-clang")
set(CMAKE_CXX_COMPILER "${OSXCROSS_ROOT}/bin/x86_64-apple-${OSXCROSS_TARGET}-clang++")

# Target environment
set(CMAKE_FIND_ROOT_PATH "${OSXCROSS_ROOT}/SDK/MacOSX11.3.sdk")

# Search paths
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# macOS deployment target
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum macOS version")

# Disable Linux-specific features for macOS target
set(WITH_LINUX_SYS OFF CACHE BOOL "Disable Linux-specific sys interfaces for macOS")
31 changes: 31 additions & 0 deletions cmake/toolchains/mingw-w64-x86_64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Example CMake toolchain file for cross-compiling to Windows (MinGW-w64)
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/mingw-w64-x86_64.cmake ..
#
# Prerequisites:
# - MinGW-w64 cross-compiler (x86_64-w64-mingw32-g++)
# - Cross-compiled dependencies

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR x86_64)

# Cross-compiler
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)

# Target environment
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)

# Search paths
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# Executable suffix
set(CMAKE_EXECUTABLE_SUFFIX ".exe")

# Disable Linux-specific features for Windows target
set(WITH_LINUX_SYS OFF CACHE BOOL "Disable Linux-specific sys interfaces for Windows")
31 changes: 31 additions & 0 deletions cmake/toolchains/musl-linux.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Example CMake toolchain file for musl libc (Alpine Linux / embedded)
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/musl-linux.cmake ..
#
# Prerequisites:
# - musl-gcc or a musl-based cross-compiler
# - Cross-compiled dependencies

set(CMAKE_SYSTEM_NAME Linux)

# Option 1: Using musl-gcc wrapper (on systems with musl installed)
# set(CMAKE_C_COMPILER musl-gcc)
# set(CMAKE_CXX_COMPILER musl-g++)

# Option 2: Using musl cross-compiler (adjust prefix as needed)
set(MUSL_PREFIX "x86_64-linux-musl" CACHE STRING "musl cross-compiler prefix")
set(CMAKE_C_COMPILER "${MUSL_PREFIX}-gcc")
set(CMAKE_CXX_COMPILER "${MUSL_PREFIX}-g++")

# Target environment (adjust based on your setup)
set(CMAKE_FIND_ROOT_PATH "/usr/${MUSL_PREFIX}")

# Search paths
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# musl typically prefers static linking
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries for musl")
Loading