Skip to content

Commit

Permalink
Merge pull request #458 from DiamonDinoia/reformatting
Browse files Browse the repository at this point in the history
Reformatting
  • Loading branch information
DiamonDinoia committed Jun 5, 2024
2 parents 508d968 + 7ed0563 commit 9a7e59c
Show file tree
Hide file tree
Showing 112 changed files with 15,658 additions and 12,621 deletions.
37 changes: 31 additions & 6 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,8 +1,33 @@
---
Language: Cpp
BasedOnStyle: LLVM
TabWidth: 4
ColumnLimit: 120
IndentWidth: 4
AlwaysBreakTemplateDeclarations: true
BasedOnStyle: LLVM
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
AlignConsecutiveAssignments: Consecutive
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments:
Kind: Always
OverEmptyLines: 1
AllowShortIfStatementsOnASingleLine: WithoutElse
AllowShortLambdasOnASingleLine: Inline
AllowShortLoopsOnASingleLine: true
BreakBeforeBraces: Attach
BreakBeforeBinaryOperators: None
ColumnLimit: 90
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
IndentWidth: 2
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ReflowComments: true
PenaltyBreakComment: 1
PenaltyBreakOpenParenthesis: 1 # modified; was 0
SortIncludes: CaseSensitive
SortUsingDeclarations: true
SpacesBeforeTrailingComments: 1
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
TabWidth: 2
UseTab: Never
...
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Applied clang format to the codebase
884ba427be0c60aa3399d5ea71b0e9e3a7cbf686
4 changes: 4 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ If not stated, FINUFFT is assumed (cuFINUFFT <=1.3 is listed separately).
* MAX_NF increased from 1e11 to 1e12, since machines grow.
* improved GPU python docs: migration guide; usage from cupy, numba, torch,
pycuda. PyPI pkg still at 2.2.0beta.
* Added a clang-format pre-commit hook to ensure consistent code style.
Created a .clang-format file to define the style similar to the existing style.
Applied clang-format to all cmake, C, C++, and CUDA code. Ignored the blame
using .git-blame-ignore-revs. Added a contributing.md for developers.

V 2.2.0 (12/12/23)

Expand Down
156 changes: 78 additions & 78 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@ cmake_minimum_required(VERSION 3.19)
project(finufft VERSION 2.2.0 LANGUAGES C CXX)

set(GNU_LIKE_FRONTENDS AppleClang Clang GNU)
if(CMAKE_CXX_COMPILER_ID IN_LIST GNU_LIKE_FRONTENDS)
if (CMAKE_CXX_COMPILER_ID IN_LIST GNU_LIKE_FRONTENDS)
# Set custom compiler flags for gcc-compatible compilers
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -funroll-loops")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG -funroll-loops")
endif()
endif ()

include(CTest)

if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc|ppc64|powerpc|powerpc64" OR (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64"))
if (CMAKE_SYSTEM_PROCESSOR MATCHES "ppc|ppc64|powerpc|powerpc64" OR (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64"))
# PowerPC arch does not have -march flag.
set(FINUFFT_ARCH_FLAGS "-mtune=native" CACHE STRING "Compiler flags for specifying target architecture.")
else()
else ()
set(FINUFFT_ARCH_FLAGS "-march=native" CACHE STRING "Compiler flags for specifying target architecture.")
endif()
endif ()
set(FINUFFT_FFTW_SUFFIX "OpenMP" CACHE STRING "Suffix for FFTW libraries (e.g. OpenMP, Threads etc.)")
set(FINUFFT_FFTW_LIBRARIES "DEFAULT" CACHE STRING "Specify a custom FFTW library")

Expand All @@ -34,24 +34,24 @@ option(FINUFFT_STATIC_LINKING "Whether to link the static FINUFFT library (libfi
option(FINUFFT_BUILD_DEVEL "Whether to build developement executables" OFF)
# sphinx tag (don't remove): @cmake_opts_end

if(FINUFFT_USE_CPU)
if (FINUFFT_USE_CPU)
# suppress Windows warnings about "unsafe" functions
if(WIN32)
if (WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
endif ()

# make apple with gnu use old linker, new linker breaks, see issue #360
if((APPLE) AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
if ((APPLE) AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
add_link_options("-ld64")
endif()
endif ()

set(CPM_DOWNLOAD_VERSION 0.38.0)
set(FFTW_VERSION 3.3.10)

include(cmake/setupCPM.cmake)
include(cmake/setupFFTW.cmake)

endif()
endif ()

if (FINUFFT_BUILD_MATLAB)
# When building for matlab, we will fetch the OpenMP library used by matlab
Expand Down Expand Up @@ -99,21 +99,21 @@ endfunction()

# Utility function to link static/dynamic lib
function(finufft_link_test target)
if(FINUFFT_STATIC_LINKING)
target_link_libraries(${target} PRIVATE finufft_static)
if(FINUFFT_USE_OPENMP)
target_link_libraries(${target} PRIVATE OpenMP::OpenMP_CXX)
if(WIN32)
target_link_options(${target} PRIVATE ${OpenMP_CXX_FLAGS})
endif()
endif()
else()
target_link_libraries(${target} PRIVATE finufft)
if(WIN32)
target_compile_definitions(${target} PRIVATE FINUFFT_DLL)
endif()
endif()
enable_asan(${target})
if (FINUFFT_STATIC_LINKING)
target_link_libraries(${target} PRIVATE finufft_static)
if (FINUFFT_USE_OPENMP)
target_link_libraries(${target} PRIVATE OpenMP::OpenMP_CXX)
if (WIN32)
target_link_options(${target} PRIVATE ${OpenMP_CXX_FLAGS})
endif ()
endif ()
else ()
target_link_libraries(${target} PRIVATE finufft)
if (WIN32)
target_compile_definitions(${target} PRIVATE FINUFFT_DLL)
endif ()
endif ()
enable_asan(${target})
endfunction()

# Utility function to set finufft compilation options.
Expand All @@ -134,9 +134,9 @@ function(set_finufft_options target)
target_link_libraries(${target} PRIVATE OpenMP::OpenMP_CXX)
# there are issues on windows with OpenMP and CMake, so we need to manually add the flags
# otherwise there are link errors
if(WIN32)
if (WIN32)
target_link_options(${target} PRIVATE ${OpenMP_CXX_FLAGS})
endif()
endif ()
else ()
if (CMAKE_CXX_COMPILER_ID IN_LIST FINUFFT_GNU_LIKE_COMPILERS)
# OpenMP disabled, suppress unknown pragma warnings to avoid spam.
Expand All @@ -148,16 +148,16 @@ function(set_finufft_options target)
# include them since we need them for build not for install
# trying to include them directly into the fftw and fftwf targets causes issues with
# the latest version of cmake, so we do it here instead.
if ( (NOT FFTW_FOUND ) OR (FINUFFT_FFTW_LIBRARIES STREQUAL DOWNLOAD))
list (GET FINUFFT_FFTW_LIBRARIES 0 element)
if ((NOT FFTW_FOUND) OR (FINUFFT_FFTW_LIBRARIES STREQUAL DOWNLOAD))
list(GET FINUFFT_FFTW_LIBRARIES 0 element)
get_property(FFTW_SOURCE_DIR TARGET ${element} PROPERTY SOURCE_DIR)
set(FFTW_INCLUDE_DIR ${FFTW_SOURCE_DIR}/api)
target_include_directories(${target} PUBLIC ${FFTW_INCLUDE_DIR})
endif()
endif ()

endfunction()

if(FINUFFT_USE_CPU)
if (FINUFFT_USE_CPU)
# Main finufft libraries
add_library(finufft_f32 OBJECT ${FINUFFT_PRECISION_DEPENDENT_SOURCES})
target_compile_definitions(finufft_f32 PRIVATE SINGLE)
Expand All @@ -169,7 +169,7 @@ if(FINUFFT_USE_CPU)
set_finufft_options(finufft_f64)
target_link_libraries(finufft_f64 PUBLIC ${FINUFFT_FFTW_LIBRARIES})

if(WIN32)
if (WIN32)
add_library(finufft_f32_dll OBJECT ${FINUFFT_PRECISION_DEPENDENT_SOURCES})
target_compile_definitions(finufft_f32_dll PRIVATE SINGLE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft_f32_dll)
Expand All @@ -179,54 +179,54 @@ if(FINUFFT_USE_CPU)
target_compile_definitions(finufft_f64_dll PRIVATE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft_f64_dll)
target_link_libraries(finufft_f64_dll PUBLIC ${FINUFFT_FFTW_LIBRARIES})
endif()
endif ()

add_library(finufft SHARED src/utils_precindep.cpp contrib/legendre_rule_fast.cpp)
target_compile_definitions(finufft PRIVATE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft)
if(NOT WIN32)
if (NOT WIN32)
target_link_libraries(finufft PUBLIC finufft_f32 finufft_f64)
else()
else ()
target_link_libraries(finufft PUBLIC finufft_f32_dll finufft_f64_dll)
endif()
endif ()
# windows does not have a math library, so we need to exclude it
if(NOT WIN32)
if (NOT WIN32)
target_link_libraries(finufft PUBLIC m)
endif()
endif ()
target_include_directories(finufft PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
target_include_directories(finufft SYSTEM INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)

add_library(finufft_static STATIC src/utils_precindep.cpp contrib/legendre_rule_fast.cpp)
set_finufft_options(finufft_static)
target_link_libraries(finufft_static PUBLIC finufft_f32 finufft_f64)
# windows does not have a math library, so we need to exclude it
if(NOT WIN32)
if (NOT WIN32)
target_link_libraries(finufft_static PUBLIC m)
endif()
endif ()
target_include_directories(finufft_static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
target_include_directories(finufft_static SYSTEM INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)

file(GLOB FINUFFT_PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/finufft*.h")
set_target_properties(finufft PROPERTIES PUBLIC_HEADER "${FINUFFT_PUBLIC_HEADERS}")

list(APPEND INSTALL_TARGETS finufft finufft_static)
endif()

if(FINUFFT_USE_CUDA)
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
message("FINUFFT WARNING: No CUDA architecture supplied via '-DCMAKE_CUDA_ARCHITECTURES=...', defaulting to '60;70;75;'")
message("See: https://developer.nvidia.com/cuda-gpus for more details on what architecture to supply.")
set(CMAKE_CUDA_ARCHITECTURES "60;70;75" CACHE STRING "" FORCE)
endif()
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
add_subdirectory(src/cuda)
if (BUILD_TESTING AND FINUFFT_BUILD_TESTS)
add_subdirectory(perftest/cuda)
endif ()

list(APPEND INSTALL_TARGETS cufinufft cufinufft_static)
endif()
endif ()

if (FINUFFT_USE_CUDA)
if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
message("FINUFFT WARNING: No CUDA architecture supplied via '-DCMAKE_CUDA_ARCHITECTURES=...', defaulting to '60;70;75;'")
message("See: https://developer.nvidia.com/cuda-gpus for more details on what architecture to supply.")
set(CMAKE_CUDA_ARCHITECTURES "60;70;75" CACHE STRING "" FORCE)
endif ()
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
add_subdirectory(src/cuda)
if (BUILD_TESTING AND FINUFFT_BUILD_TESTS)
add_subdirectory(perftest/cuda)
endif ()

list(APPEND INSTALL_TARGETS cufinufft cufinufft_static)
endif ()

# Add tests defined in their own directory
if (BUILD_TESTING AND FINUFFT_BUILD_TESTS AND FINUFFT_USE_CPU)
Expand Down Expand Up @@ -258,27 +258,27 @@ endif ()
include(GNUInstallDirs)
install(TARGETS ${INSTALL_TARGETS} PUBLIC_HEADER)
install(FILES ${PROJECT_SOURCE_DIR}/LICENSE
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/licenses/finufft)
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/licenses/finufft)
if (FINUFFT_USE_CPU)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/examples
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft
PATTERN "CMakeLists.txt" EXCLUDE
PATTERN "README" EXCLUDE
PATTERN "examples/cuda" EXCLUDE
)
if (FINUFFT_BUILD_FORTRAN)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/fortran/examples
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft/fortran
)
install(FILES ${PROJECT_SOURCE_DIR}/include/finufft.fh
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
install(DIRECTORY ${PROJECT_SOURCE_DIR}/examples
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft
PATTERN "CMakeLists.txt" EXCLUDE
PATTERN "README" EXCLUDE
PATTERN "examples/cuda" EXCLUDE
)
endif()
if (FINUFFT_BUILD_FORTRAN)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/fortran/examples
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft/fortran
)
install(FILES ${PROJECT_SOURCE_DIR}/include/finufft.fh
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endif ()
endif ()
if (FINUFFT_USE_CUDA)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/examples/cuda
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft/examples
PATTERN "README" EXCLUDE
PATTERN "CMakeLists.txt" EXCLUDE
)
endif()
install(DIRECTORY ${PROJECT_SOURCE_DIR}/examples/cuda
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/finufft/examples
PATTERN "README" EXCLUDE
PATTERN "CMakeLists.txt" EXCLUDE
)
endif ()
Loading

0 comments on commit 9a7e59c

Please sign in to comment.