Commit e6e504cd authored by Cianciosa, Mark's avatar Cianciosa, Mark
Browse files

Merge branch 'language_bindings' into 'main'

Add inital fortran binding and test. Allow derivatives of piecewise constants...

See merge request !76
parents 096987ac 9297e9cd
Loading
Loading
Loading
Loading
+51 −11
Original line number Diff line number Diff line
cmake_minimum_required (VERSION 3.21)

project (rays CXX)
project (graph_framework CXX)

#-------------------------------------------------------------------------------
#  Build Options
@@ -12,6 +12,8 @@ option (USE_CONSTANT_CACHE "Cache the value of constantants in kernel registers.
option (SHOW_USE_COUNT "Add a comment showing the use count in kernel sources." OFF)
option (USE_INDEX_CACHE "Cache index values instead of computing them every time." OFF)
option (USE_VERBOSE "Verbose jit option." OFF)
option (BUILD_C_BINDING "Build C interface." OFF)
option (BUILD_Fortran_BINDING "Build Fortran interface." OFF)

#-------------------------------------------------------------------------------
#  Set the cmake module path.
@@ -40,6 +42,9 @@ if (${APPLE})

    if (${USE_METAL})
        enable_language (OBJCXX)
        if (${BUILD_C_BINDING})
            enable_language (OBJC)
        endif ()

        add_library (metal_lib INTERFACE)
        target_link_libraries (metal_lib
@@ -54,7 +59,8 @@ if (${APPLE})
        )
        target_compile_options (metal_lib
                                INTERFACE
                                -fobjc-arc
                                $<$<COMPILE_LANGUAGE:OBJCXX>:-fobjc-arc>
                                $<$<COMPILE_LANGUAGE:OBJC>:-fobjc-arc>
        )
    endif ()
else ()
@@ -311,9 +317,22 @@ endif ()
#-------------------------------------------------------------------------------
#  Setup targets
#-------------------------------------------------------------------------------

add_subdirectory (graph_framework)

if (${BUILD_Fortran_BINDING})
    set (BUILD_C_BINDING ON CACHE STRING "Build C interface." FORCE)
endif ()

if (${BUILD_C_BINDING})
    enable_language (C)
    add_subdirectory (graph_c_binding)
endif ()

if (${BUILD_Fortran_BINDING})
    enable_language (Fortran)
    add_subdirectory (graph_fortran_binding)
endif ()

#-------------------------------------------------------------------------------
#  Setup testing
#-------------------------------------------------------------------------------
@@ -322,24 +341,41 @@ enable_testing ()
#-------------------------------------------------------------------------------
#  Tool setup
#-------------------------------------------------------------------------------
macro (add_tool_target target)
macro (add_tool_target target lang)
    add_executable (${target})
    target_sources (${target}
                    PRIVATE
                    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${target}.cpp>
                    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${target}.${lang}>
    )

    if (${USE_METAL})
        set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/${target}.cpp
        if (${lang} STREQUAL "cpp")
            set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/${target}.${lang}
                                         PROPERTIES
                                         LANGUAGE OBJCXX
            )
        elseif (${lang} STREQUAL "c")
            set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/${target}.${lang}
                                         PROPERTIES
                                         LANGUAGE OBJC
            )
        endif ()
    endif ()
    if (${lang} STREQUAL "c")
        set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/${target}.${lang}
                                     PROPERTIES
                                     SKIP_PRECOMPILE_HEADERS ON
        )
    endif ()

    target_link_libraries (${target}
                           PUBLIC
                           rays
                           graph_framework
    )

    if (${USE_PCH} AND ${BUILD_C_BINDING})
        target_precompile_headers (${target} REUSE_FROM graph_c)
    endif ()
endmacro ()

add_subdirectory (graph_driver)
@@ -350,16 +386,20 @@ add_subdirectory (graph_korc)
#-------------------------------------------------------------------------------
#  Define macro function to register tests.
#-------------------------------------------------------------------------------
macro (add_test_target target)
    add_tool_target (${target})
macro (add_test_target target lang)
    add_tool_target (${target} ${lang})

    add_test (NAME ${target}
              COMMAND ${target}
    )

    if (${USE_PCH})
        if (${BUILD_C_BINDING})
            target_precompile_headers (${target} REUSE_FROM graph_c)
        else ()
            target_precompile_headers (${target} REUSE_FROM xrays)
        endif ()
    endif ()
endmacro ()

add_subdirectory (graph_tests)
+2 −2
Original line number Diff line number Diff line
add_tool_target (xrays_bench)
add_tool_target (xrays_bench  cpp)

if (${USE_PCH})
if (${USE_PCH} AND NOT ${BUILD_C_BINDING})
    target_precompile_headers (xrays_bench REUSE_FROM xrays)
endif ()
+24 −0
Original line number Diff line number Diff line
add_library (graph_c)

target_include_directories (graph_c
                            PUBLIC
                            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
target_link_libraries (graph_c
                       PUBLIC
                       graph_framework
)
target_sources (graph_c
                PRIVATE
                $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/graph_c_binding.cpp>
)
if (${USE_METAL})
    set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/graph_c_binding.cpp
                                 PROPERTIES
                                 LANGUAGE OBJCXX
    )
endif ()
target_compile_features (graph_c
                         PUBLIC
                         c_std_17
)
+3261 −0

File added.

Preview size limit exceeded, changes collapsed.

+498 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading