From b3f93e73bfc95763ff0909773d86f1531b1648c4 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 3 Nov 2025 21:36:13 +0000 Subject: [PATCH 1/2] Build C and Fortran APIs as separate targets --- CMakeLists.txt | 123 +++++++++++------- examples/CMakeLists.txt | 23 +++- src/c/CMakeLists.txt | 24 +++- src/c/experimental/CMakeLists.txt | 5 +- src/core/CMakeLists.txt | 13 +- src/dtype/CMakeLists.txt | 6 +- src/experimental/CMakeLists.txt | 5 +- src/fortran/CMakeLists.txt | 29 ++++- src/functional/CMakeLists.txt | 10 +- src/loops/CMakeLists.txt | 15 ++- src/occa/CMakeLists.txt | 1 + src/occa/internal/CMakeLists.txt | 5 +- src/occa/internal/api/CMakeLists.txt | 6 +- src/occa/internal/api/metal/CMakeLists.txt | 16 ++- src/occa/internal/bin/CMakeLists.txt | 5 +- src/occa/internal/c/CMakeLists.txt | 6 +- src/occa/internal/core/CMakeLists.txt | 15 ++- src/occa/internal/functional/CMakeLists.txt | 5 +- src/occa/internal/io/CMakeLists.txt | 7 +- src/occa/internal/lang/CMakeLists.txt | 27 +++- .../internal/lang/builtins/CMakeLists.txt | 6 +- .../lang/builtins/attributes/CMakeLists.txt | 22 +++- src/occa/internal/lang/expr/CMakeLists.txt | 50 +++++-- src/occa/internal/lang/loaders/CMakeLists.txt | 11 +- src/occa/internal/lang/modes/CMakeLists.txt | 16 ++- .../internal/lang/statement/CMakeLists.txt | 40 ++++-- src/occa/internal/lang/token/CMakeLists.txt | 24 +++- src/occa/internal/lang/type/CMakeLists.txt | 20 ++- src/occa/internal/modes/cuda/CMakeLists.txt | 15 ++- src/occa/internal/modes/dpcpp/CMakeLists.txt | 15 ++- src/occa/internal/modes/hip/CMakeLists.txt | 15 ++- src/occa/internal/modes/metal/CMakeLists.txt | 13 +- src/occa/internal/modes/opencl/CMakeLists.txt | 15 ++- src/occa/internal/modes/openmp/CMakeLists.txt | 7 +- src/occa/internal/modes/serial/CMakeLists.txt | 13 +- src/occa/internal/utils/CMakeLists.txt | 18 ++- src/types/CMakeLists.txt | 9 +- src/utils/CMakeLists.txt | 10 +- tests/CMakeLists.txt | 25 +++- 39 files changed, 538 insertions(+), 152 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f3ca1d6b..1e247f3d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,14 @@ cmake_minimum_required (VERSION 3.21 FATAL_ERROR) -# See here: https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling -set(CMAKE_SKIP_BUILD_RPATH FALSE) -set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - #---[ CMake Config ]-------------------- set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +# See here: https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE ) + +set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" ) +set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") message(STATUS "Using CMake version ${CMAKE_VERSION}") cmake_policy(SET CMP0054 NEW) @@ -17,38 +17,39 @@ cmake_policy(SET CMP0056 NEW) #---[ Build Config ]-------------------- project(OCCA - VERSION 2.0.0 + VERSION 2.0.0 DESCRIPTION "JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal" HOMEPAGE_URL "https://github.com/libocca/occa" - LANGUAGES C CXX) + LANGUAGES C CXX +) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) endif() # CMake will decay to a previous C++ standard if a compiler does not support C++17 -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -option(OCCA_ENABLE_OPENMP "Build with OpenMP if available" ON) -option(OCCA_ENABLE_CUDA "Build with CUDA if available" ON) -option(OCCA_ENABLE_OPENCL "Build with OpenCL if available" ON) -option(OCCA_ENABLE_HIP "Build with HIP if available" ON) -option(OCCA_ENABLE_METAL "Build with Metal if available" ON) -option(OCCA_ENABLE_DPCPP "Build with SYCL/DPCPP if available" ON) +option(OCCA_ENABLE_OPENMP "Build with OpenMP if available" ON) +option(OCCA_ENABLE_CUDA "Build with CUDA if available" ON) +option(OCCA_ENABLE_OPENCL "Build with OpenCL if available" ON) +option(OCCA_ENABLE_HIP "Build with HIP if available" ON) +option(OCCA_ENABLE_METAL "Build with Metal if available" ON) +option(OCCA_ENABLE_DPCPP "Build with SYCL/DPCPP if available" ON) -option(OCCA_ENABLE_TESTS "Build tests" OFF) -option(OCCA_ENABLE_EXAMPLES "Build simple examples" OFF) -option(OCCA_ENABLE_FORTRAN "Enable Fortran interface" OFF) -option(OCCA_CLANG_BASED_TRANSPILER "Build with occa-transpiler dependecy" OFF) +option(OCCA_ENABLE_TESTS "Build tests" OFF) +option(OCCA_ENABLE_EXAMPLES "Build simple examples" OFF) +option(OCCA_ENABLE_FORTRAN "Enable Fortran interface" OFF) +option(OCCA_CLANG_BASED_TRANSPILER "Build with occa-transpiler dependecy" OFF) if(OCCA_ENABLE_FORTRAN) enable_language(Fortran) endif() -option(ENABLE_SHARABLE_DEVICE "Enable sharable device by multiple threads" OFF) +option(ENABLE_SHARABLE_DEVICE "Enable sharable device by multiple threads" OFF) if (ENABLE_SHARABLE_DEVICE) set(OCCA_THREAD_SHARABLE_ENABLED 1) message("-- OCCA sharable by multi-threads : Enabled") @@ -73,11 +74,6 @@ else() set(OCCA_OS "OCCA_WINDOWS_OS") endif() -# INFO: order is important, deps should not apply compiler flags -if (OCCA_CLANG_BASED_TRANSPILER) - find_package(oklt REQUIRED) -endif() - include(SetCompilerFlags) string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) @@ -99,32 +95,32 @@ set(namespace "${PROJECT_NAME}::") #---[ libocca.so ]---------------------- add_library(libocca SHARED) add_library(${namespace}libocca ALIAS libocca) +target_include_directories(libocca + PUBLIC + $ + $ + $ + $ +) # Without this, CMake will create liblibocca.so -set_target_properties(libocca PROPERTIES - OUTPUT_NAME occa - LIBRARY_OUTPUT_DIRECTORY ${OCCA_BUILD_DIR}/lib) +set_target_properties(libocca + PROPERTIES + OUTPUT_NAME + occa + LIBRARY_OUTPUT_DIRECTORY + ${OCCA_BUILD_DIR}/lib +) # Find needed and requested packages find_package(Threads REQUIRED) # Use the provided imported target Threads::Threads, to make our package relocatable -target_link_libraries(libocca PRIVATE - Threads::Threads ${CMAKE_DL_LIBS}) - -target_include_directories(libocca PUBLIC - $ - $ - $) - -target_include_directories(libocca PRIVATE - $) - -if (OCCA_CLANG_BASED_TRANSPILER) - target_link_libraries(libocca PRIVATE occa::occa-transpiler) - target_compile_definitions(libocca PRIVATE -DBUILD_WITH_CLANG_BASED_TRANSPILER) -endif() - +target_link_libraries(libocca + PRIVATE + Threads::Threads + ${CMAKE_DL_LIBS} +) #======================================= #---[ OpenMP ]-------------------------- @@ -157,7 +153,7 @@ if(OCCA_ENABLE_CUDA) message("-- CUDA driver library: ${CUDAToolkit_LIBRARY_DIR}") # Use the provided imported target CUDA::cuda_driver, to make our package relocatable - target_link_libraries(libocca PUBLIC CUDA::cuda_driver) + target_link_libraries(libocca PRIVATE CUDA::cuda_driver) else() set(OCCA_CUDA_ENABLED 0) endif() @@ -244,10 +240,18 @@ if(OCCA_ENABLE_METAL AND APPLE) endif() #======================================= +#---[ Clang Transpiler ]--------------------------- +# INFO: order is important, deps should not apply compiler flags +if (OCCA_CLANG_BASED_TRANSPILER) + find_package(oklt REQUIRED) + target_link_libraries(libocca PRIVATE occa::occa-transpiler) + target_compile_definitions(libocca PRIVATE -DBUILD_WITH_CLANG_BASED_TRANSPILER) +endif() + include(CheckRequiredCompilerFeatures) if(NOT OCCA_IS_TOP_LEVEL) -# OCCA is being built as a subdirectory in another project + # OCCA is being built as a subdirectory in another project set(OCCA_OPENMP_ENABLED ${OCCA_OPENMP_ENABLED} PARENT_SCOPE) set(OCCA_CUDA_ENABLED ${OCCA_CUDA_ENABLED} PARENT_SCOPE) set(OCCA_HIP_ENABLED ${OCCA_HIP_ENABLED} PARENT_SCOPE) @@ -287,7 +291,26 @@ if(OCCA_ENABLE_TESTS) add_subdirectory(tests) endif() -install(TARGETS libocca EXPORT occaExport DESTINATION lib) +if (OCCA_ENABLE_FORTRAN) + install(TARGETS + libocca + c_api + fortran_api + EXPORT + occaExport + DESTINATION + lib + ) +else() + install(TARGETS + libocca + c_api + EXPORT + occaExport + DESTINATION + lib + ) +endif() install(DIRECTORY include/ DESTINATION include) # Create a package config and associated files. diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 239493936..5d5aa2bd6 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -43,8 +43,23 @@ endmacro() macro(compile_example target file mode) add_executable(${target} ${file}) - target_link_libraries(${target} OCCA::libocca) - target_include_directories(${target} PRIVATE $) + + target_link_libraries(${target} + PRIVATE + OCCA::c_api + OCCA::libocca + ) + if (OCCA_ENABLE_FORTRAN) + target_link_libraries(${target} + PRIVATE + OCCA::fortran_api + ) + endif() + + target_include_directories(${target} + PRIVATE + $ + ) file(RELATIVE_PATH install_dir ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_LIST_DIR}) file(GLOB_RECURSE OKLS "${CMAKE_CURRENT_LIST_DIR}/*.okl") @@ -63,6 +78,10 @@ endmacro() macro(compile_c_example target file) compile_example(examples_c_${target} ${file} TRUE) + target_link_libraries(examples_c_${target} + PRIVATE + OCCA::c_api + ) endmacro() macro(compile_cpp_example target file) diff --git a/src/c/CMakeLists.txt b/src/c/CMakeLists.txt index 9b2670bda..d32db5aef 100644 --- a/src/c/CMakeLists.txt +++ b/src/c/CMakeLists.txt @@ -1,4 +1,22 @@ -target_sources(libocca PRIVATE base.cpp device.cpp dtype.cpp - experimental io.cpp json.cpp kernel.cpp kernel_fortran_interface.cpp - memory.cpp memoryPool.cpp scope.cpp stream.cpp) +add_library(c_api SHARED) +add_library(${namespace}c_api ALIAS c_api) +target_sources(c_api + PRIVATE + base.cpp + device.cpp + dtype.cpp + io.cpp + json.cpp + kernel.cpp + kernel_fortran_interface.cpp + memory.cpp + memoryPool.cpp + scope.cpp + stream.cpp +) add_subdirectory(experimental) + +target_link_libraries(c_api + PRIVATE + libocca +) diff --git a/src/c/experimental/CMakeLists.txt b/src/c/experimental/CMakeLists.txt index 33545099a..a5be31687 100644 --- a/src/c/experimental/CMakeLists.txt +++ b/src/c/experimental/CMakeLists.txt @@ -1 +1,4 @@ -target_sources(libocca PRIVATE kernelBuilder.cpp) +target_sources(c_api + PRIVATE + kernelBuilder.cpp +) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 046aa075e..ee0f81c99 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,2 +1,11 @@ -target_sources(libocca PRIVATE base.cpp device.cpp kernelArg.cpp - kernel.cpp memory.cpp memoryPool.cpp stream.cpp streamTag.cpp) +target_sources(libocca + PRIVATE + base.cpp + device.cpp + kernelArg.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + stream.cpp + streamTag.cpp +) diff --git a/src/dtype/CMakeLists.txt b/src/dtype/CMakeLists.txt index eb6d6737d..e86b03e8e 100644 --- a/src/dtype/CMakeLists.txt +++ b/src/dtype/CMakeLists.txt @@ -1 +1,5 @@ -target_sources(libocca PRIVATE builtins.cpp dtype.cpp) +target_sources(libocca + PRIVATE + builtins.cpp + dtype.cpp +) diff --git a/src/experimental/CMakeLists.txt b/src/experimental/CMakeLists.txt index 33545099a..2912d6a2c 100644 --- a/src/experimental/CMakeLists.txt +++ b/src/experimental/CMakeLists.txt @@ -1 +1,4 @@ -target_sources(libocca PRIVATE kernelBuilder.cpp) +target_sources(libocca + PRIVATE + kernelBuilder.cpp +) diff --git a/src/fortran/CMakeLists.txt b/src/fortran/CMakeLists.txt index 37a3f1512..96a899b2b 100644 --- a/src/fortran/CMakeLists.txt +++ b/src/fortran/CMakeLists.txt @@ -1,5 +1,24 @@ -target_sources(libocca PRIVATE fc_string_m.f90 occa_base_m.f90 - occa_device_m.f90 occa_dtype_m.f90 occa_json_m.f90 - occa_kernelBuilder_m.f90 occa_kernel_m.f90 occa_memory_m.f90 - occa_m.f90 occa_scope_m.f90 occa_stream_m.f90 occa_typedefs_m.f90 - occa_types_m.f90) +add_library(fortran_api SHARED) +add_library(${namespace}fortran_api ALIAS fortran_api) +target_sources(fortran_api + PRIVATE + fc_string_m.f90 + occa_base_m.f90 + occa_device_m.f90 + occa_dtype_m.f90 + occa_json_m.f90 + occa_kernelBuilder_m.f90 + occa_kernel_m.f90 + occa_memory_m.f90 + occa_m.f90 + occa_scope_m.f90 + occa_stream_m.f90 + occa_typedefs_m.f90 + occa_types_m.f90 +) + +target_link_libraries(fortran_api + PRIVATE + c_api + libocca +) diff --git a/src/functional/CMakeLists.txt b/src/functional/CMakeLists.txt index 77d11d084..2ecbd8975 100644 --- a/src/functional/CMakeLists.txt +++ b/src/functional/CMakeLists.txt @@ -1,2 +1,8 @@ -target_sources(libocca PRIVATE baseFunction.cpp functionDefinition.cpp - range.cpp scope.cpp utils.cpp) +target_sources(libocca + PRIVATE + baseFunction.cpp + functionDefinition.cpp + range.cpp + scope.cpp + utils.cpp +) diff --git a/src/loops/CMakeLists.txt b/src/loops/CMakeLists.txt index 43fe1f54e..09be6b665 100644 --- a/src/loops/CMakeLists.txt +++ b/src/loops/CMakeLists.txt @@ -1,2 +1,13 @@ -target_sources(libocca PRIVATE forLoop.cpp iteration.cpp - typelessForLoop.cpp) +target_sources(libocca + PRIVATE + forLoop.cpp + iteration.cpp + typelessForLoop.cpp +) + +target_include_directories(libocca + PRIVATE + $ + $ + $ +) diff --git a/src/occa/CMakeLists.txt b/src/occa/CMakeLists.txt index 105d974ca..3ddc328d8 100644 --- a/src/occa/CMakeLists.txt +++ b/src/occa/CMakeLists.txt @@ -1 +1,2 @@ add_subdirectory(internal) + diff --git a/src/occa/internal/CMakeLists.txt b/src/occa/internal/CMakeLists.txt index c277d37b1..047a72320 100644 --- a/src/occa/internal/CMakeLists.txt +++ b/src/occa/internal/CMakeLists.txt @@ -1,4 +1,7 @@ -target_sources(libocca PRIVATE modes.cpp) +target_sources(libocca + PRIVATE + modes.cpp +) add_subdirectory(api) add_subdirectory(bin) diff --git a/src/occa/internal/api/CMakeLists.txt b/src/occa/internal/api/CMakeLists.txt index 21f85e41e..fdc4471fb 100644 --- a/src/occa/internal/api/CMakeLists.txt +++ b/src/occa/internal/api/CMakeLists.txt @@ -1,4 +1,8 @@ if (OCCA_METAL_ENABLED) - target_sources(libocca PRIVATE metal.mm) + target_sources(libocca + PRIVATE + metal.mm + ) endif() + add_subdirectory(metal) diff --git a/src/occa/internal/api/metal/CMakeLists.txt b/src/occa/internal/api/metal/CMakeLists.txt index e00f8a130..decd1b534 100644 --- a/src/occa/internal/api/metal/CMakeLists.txt +++ b/src/occa/internal/api/metal/CMakeLists.txt @@ -1,5 +1,15 @@ if (OCCA_METAL_ENABLED) - target_sources(libocca PRIVATE buffer.mm commandQueue.mm device.mm - event.mm function.mm) + target_sources(libocca + PRIVATE + buffer.mm + commandQueue.mm + device.mm + event.mm + function.mm + ) endif() -target_sources(libocca PRIVATE polyfill.cpp) + +target_sources(libocca + PRIVATE + polyfill.cpp +) diff --git a/src/occa/internal/bin/CMakeLists.txt b/src/occa/internal/bin/CMakeLists.txt index ac594abc5..f66aac99b 100644 --- a/src/occa/internal/bin/CMakeLists.txt +++ b/src/occa/internal/bin/CMakeLists.txt @@ -1 +1,4 @@ -target_sources(libocca PRIVATE occa.cpp) +target_sources(libocca + PRIVATE + occa.cpp +) diff --git a/src/occa/internal/c/CMakeLists.txt b/src/occa/internal/c/CMakeLists.txt index 13ce06431..df8a07345 100644 --- a/src/occa/internal/c/CMakeLists.txt +++ b/src/occa/internal/c/CMakeLists.txt @@ -1 +1,5 @@ -target_sources(libocca PRIVATE cli.cpp types.cpp) +target_sources(libocca + PRIVATE + cli.cpp + types.cpp +) diff --git a/src/occa/internal/core/CMakeLists.txt b/src/occa/internal/core/CMakeLists.txt index a39985177..0f2e0beb7 100644 --- a/src/occa/internal/core/CMakeLists.txt +++ b/src/occa/internal/core/CMakeLists.txt @@ -1,3 +1,12 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - launchedDevice.cpp launchedKernel.cpp memory.cpp memoryPool.cpp - stream.cpp streamTag.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + launchedDevice.cpp + launchedKernel.cpp + memory.cpp + memoryPool.cpp + stream.cpp + streamTag.cpp +) diff --git a/src/occa/internal/functional/CMakeLists.txt b/src/occa/internal/functional/CMakeLists.txt index 82dd9f8df..61ff9f855 100644 --- a/src/occa/internal/functional/CMakeLists.txt +++ b/src/occa/internal/functional/CMakeLists.txt @@ -1 +1,4 @@ -target_sources(libocca PRIVATE functionStore.cpp) +target_sources(libocca + PRIVATE + functionStore.cpp +) diff --git a/src/occa/internal/io/CMakeLists.txt b/src/occa/internal/io/CMakeLists.txt index 8fd56c8d5..c26fae132 100644 --- a/src/occa/internal/io/CMakeLists.txt +++ b/src/occa/internal/io/CMakeLists.txt @@ -1 +1,6 @@ -target_sources(libocca PRIVATE cache.cpp output.cpp utils.cpp) +target_sources(libocca + PRIVATE + cache.cpp + output.cpp + utils.cpp +) diff --git a/src/occa/internal/lang/CMakeLists.txt b/src/occa/internal/lang/CMakeLists.txt index bb80e8918..136715d52 100644 --- a/src/occa/internal/lang/CMakeLists.txt +++ b/src/occa/internal/lang/CMakeLists.txt @@ -1,8 +1,25 @@ -target_sources(libocca PRIVATE attribute.cpp enumerator.cpp file.cpp - kernelMetadata.cpp keyword.cpp macro.cpp operator.cpp parser.cpp - preprocessor.cpp printer.cpp processingStages.cpp qualifier.cpp - scope.cpp specialMacros.cpp statementContext.cpp statementPeeker.cpp - tokenContext.cpp tokenizer.cpp variable.cpp) +target_sources(libocca + PRIVATE + attribute.cpp + enumerator.cpp + file.cpp + kernelMetadata.cpp + keyword.cpp + macro.cpp + operator.cpp + parser.cpp + preprocessor.cpp + printer.cpp + processingStages.cpp + qualifier.cpp + scope.cpp + specialMacros.cpp + statementContext.cpp + statementPeeker.cpp + tokenContext.cpp + tokenizer.cpp + variable.cpp +) add_subdirectory(builtins) add_subdirectory(expr) diff --git a/src/occa/internal/lang/builtins/CMakeLists.txt b/src/occa/internal/lang/builtins/CMakeLists.txt index b700c56af..d7b54a7c0 100644 --- a/src/occa/internal/lang/builtins/CMakeLists.txt +++ b/src/occa/internal/lang/builtins/CMakeLists.txt @@ -1,2 +1,6 @@ -target_sources(libocca PRIVATE types.cpp) +target_sources(libocca + PRIVATE + types.cpp +) + add_subdirectory(attributes) diff --git a/src/occa/internal/lang/builtins/attributes/CMakeLists.txt b/src/occa/internal/lang/builtins/attributes/CMakeLists.txt index bd3aa3802..c822e7719 100644 --- a/src/occa/internal/lang/builtins/attributes/CMakeLists.txt +++ b/src/occa/internal/lang/builtins/attributes/CMakeLists.txt @@ -1,4 +1,18 @@ -target_sources(libocca PRIVATE atomic.cpp barrier.cpp dim.cpp - exclusive.cpp globalPtr.cpp implicitArg.cpp inner.cpp kernel.cpp - maxInnerDims.cpp noBarrier.cpp outer.cpp restrict.cpp shared.cpp - simdLength.cpp tile.cpp) +target_sources(libocca + PRIVATE + atomic.cpp + barrier.cpp + dim.cpp + exclusive.cpp + globalPtr.cpp + implicitArg.cpp + inner.cpp + kernel.cpp + maxInnerDims.cpp + noBarrier.cpp + outer.cpp + restrict.cpp + shared.cpp + simdLength.cpp + tile.cpp +) diff --git a/src/occa/internal/lang/expr/CMakeLists.txt b/src/occa/internal/lang/expr/CMakeLists.txt index 339b0c655..e827a99f9 100644 --- a/src/occa/internal/lang/expr/CMakeLists.txt +++ b/src/occa/internal/lang/expr/CMakeLists.txt @@ -1,10 +1,40 @@ -target_sources(libocca PRIVATE binaryOpNode.cpp callNode.cpp charNode.cpp - constCastNode.cpp cudaCallNode.cpp deleteNode.cpp dpcppAtomicNode.cpp - dpcppLocalMemoryNode.cpp dynamicCastNode.cpp emptyNode.cpp expr.cpp - expressionParser.cpp exprNodeArray.cpp exprNode.cpp exprOpNode.cpp - funcCastNode.cpp functionNode.cpp identifierNode.cpp lambdaNode.cpp - leftUnaryOpNode.cpp newNode.cpp pairNode.cpp parenCastNode.cpp - parenthesesNode.cpp primitiveNode.cpp reinterpretCastNode.cpp - rightUnaryOpNode.cpp sizeofNode.cpp staticCastNode.cpp stringNode.cpp - subscriptNode.cpp ternaryOpNode.cpp throwNode.cpp tupleNode.cpp - typeNode.cpp variableNode.cpp vartypeNode.cpp) +target_sources(libocca + PRIVATE + binaryOpNode.cpp + callNode.cpp + charNode.cpp + constCastNode.cpp + cudaCallNode.cpp + deleteNode.cpp + dpcppAtomicNode.cpp + dpcppLocalMemoryNode.cpp + dynamicCastNode.cpp + emptyNode.cpp + expr.cpp + expressionParser.cpp + exprNodeArray.cpp + exprNode.cpp + exprOpNode.cpp + funcCastNode.cpp + functionNode.cpp + identifierNode.cpp + lambdaNode.cpp + leftUnaryOpNode.cpp + newNode.cpp + pairNode.cpp + parenCastNode.cpp + parenthesesNode.cpp + primitiveNode.cpp + reinterpretCastNode.cpp + rightUnaryOpNode.cpp + sizeofNode.cpp + staticCastNode.cpp + stringNode.cpp + subscriptNode.cpp + ternaryOpNode.cpp + throwNode.cpp + tupleNode.cpp + typeNode.cpp + variableNode.cpp + vartypeNode.cpp +) diff --git a/src/occa/internal/lang/loaders/CMakeLists.txt b/src/occa/internal/lang/loaders/CMakeLists.txt index 546d8e330..ff1bd1193 100644 --- a/src/occa/internal/lang/loaders/CMakeLists.txt +++ b/src/occa/internal/lang/loaders/CMakeLists.txt @@ -1,2 +1,9 @@ -target_sources(libocca PRIVATE attributeLoader.cpp enumLoader.cpp - structLoader.cpp typeLoader.cpp unionLoader.cpp variableLoader.cpp) +target_sources(libocca + PRIVATE + attributeLoader.cpp + enumLoader.cpp + structLoader.cpp + typeLoader.cpp + unionLoader.cpp + variableLoader.cpp +) diff --git a/src/occa/internal/lang/modes/CMakeLists.txt b/src/occa/internal/lang/modes/CMakeLists.txt index 601270e22..42c90bb0e 100644 --- a/src/occa/internal/lang/modes/CMakeLists.txt +++ b/src/occa/internal/lang/modes/CMakeLists.txt @@ -1,3 +1,13 @@ -target_sources(libocca PRIVATE cuda.cpp dpcpp.cpp hip.cpp metal.cpp - okl.cpp oklForStatement.cpp opencl.cpp openmp.cpp serial.cpp - withLauncher.cpp) +target_sources(libocca + PRIVATE + cuda.cpp + dpcpp.cpp + hip.cpp + metal.cpp + okl.cpp + oklForStatement.cpp + opencl.cpp + openmp.cpp + serial.cpp + withLauncher.cpp +) diff --git a/src/occa/internal/lang/statement/CMakeLists.txt b/src/occa/internal/lang/statement/CMakeLists.txt index 604ac036c..448e8f6e9 100644 --- a/src/occa/internal/lang/statement/CMakeLists.txt +++ b/src/occa/internal/lang/statement/CMakeLists.txt @@ -1,10 +1,30 @@ -target_sources(libocca PRIVATE blockStatement.cpp breakStatement.cpp - caseStatement.cpp classAccessStatement.cpp commentStatement.cpp - continueStatement.cpp declarationStatement.cpp defaultStatement.cpp - directiveStatement.cpp elifStatement.cpp elseStatement.cpp - emptyStatement.cpp expressionStatement.cpp forStatement.cpp - functionDeclStatement.cpp functionStatement.cpp gotoLabelStatement.cpp - gotoStatement.cpp ifStatement.cpp namespaceStatement.cpp - pragmaStatement.cpp returnStatement.cpp sourceCodeStatement.cpp - statementArray.cpp statement.cpp switchStatement.cpp - whileStatement.cpp) +target_sources(libocca + PRIVATE + blockStatement.cpp + breakStatement.cpp + caseStatement.cpp + classAccessStatement.cpp + commentStatement.cpp + continueStatement.cpp + declarationStatement.cpp + defaultStatement.cpp + directiveStatement.cpp + elifStatement.cpp + elseStatement.cpp + emptyStatement.cpp + expressionStatement.cpp + forStatement.cpp + functionDeclStatement.cpp + functionStatement.cpp + gotoLabelStatement.cpp + gotoStatement.cpp + ifStatement.cpp + namespaceStatement.cpp + pragmaStatement.cpp + returnStatement.cpp + sourceCodeStatement.cpp + statementArray.cpp + statement.cpp + switchStatement.cpp + whileStatement.cpp +) diff --git a/src/occa/internal/lang/token/CMakeLists.txt b/src/occa/internal/lang/token/CMakeLists.txt index b53fbc9de..bbf285610 100644 --- a/src/occa/internal/lang/token/CMakeLists.txt +++ b/src/occa/internal/lang/token/CMakeLists.txt @@ -1,5 +1,19 @@ -target_sources(libocca PRIVATE charToken.cpp commentToken.cpp - directiveToken.cpp functionToken.cpp identifierToken.cpp - newlineToken.cpp operatorToken.cpp pragmaToken.cpp primitiveToken.cpp - qualifierToken.cpp stringToken.cpp token.cpp typeToken.cpp - unknownToken.cpp variableToken.cpp vartypeToken.cpp) +target_sources(libocca + PRIVATE + charToken.cpp + commentToken.cpp + directiveToken.cpp + functionToken.cpp + identifierToken.cpp + newlineToken.cpp + operatorToken.cpp + pragmaToken.cpp + primitiveToken.cpp + qualifierToken.cpp + stringToken.cpp + token.cpp + typeToken.cpp + unknownToken.cpp + variableToken.cpp + vartypeToken.cpp +) diff --git a/src/occa/internal/lang/type/CMakeLists.txt b/src/occa/internal/lang/type/CMakeLists.txt index 141b920c4..39bcb8a5c 100644 --- a/src/occa/internal/lang/type/CMakeLists.txt +++ b/src/occa/internal/lang/type/CMakeLists.txt @@ -1,3 +1,17 @@ -target_sources(libocca PRIVATE array.cpp class.cpp enum.cpp function.cpp - functionPtr.cpp lambda.cpp pointer.cpp primitive.cpp struct.cpp - structure.cpp type.cpp typedef.cpp union.cpp vartype.cpp) +target_sources(libocca + PRIVATE + array.cpp + class.cpp + enum.cpp + function.cpp + functionPtr.cpp + lambda.cpp + pointer.cpp + primitive.cpp + struct.cpp + structure.cpp + type.cpp + typedef.cpp + union.cpp + vartype.cpp +) diff --git a/src/occa/internal/modes/cuda/CMakeLists.txt b/src/occa/internal/modes/cuda/CMakeLists.txt index 77b00ee94..c8bbc3707 100644 --- a/src/occa/internal/modes/cuda/CMakeLists.txt +++ b/src/occa/internal/modes/cuda/CMakeLists.txt @@ -1,3 +1,12 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp - utils.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp + utils.cpp +) diff --git a/src/occa/internal/modes/dpcpp/CMakeLists.txt b/src/occa/internal/modes/dpcpp/CMakeLists.txt index 77b00ee94..c8bbc3707 100644 --- a/src/occa/internal/modes/dpcpp/CMakeLists.txt +++ b/src/occa/internal/modes/dpcpp/CMakeLists.txt @@ -1,3 +1,12 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp - utils.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp + utils.cpp +) diff --git a/src/occa/internal/modes/hip/CMakeLists.txt b/src/occa/internal/modes/hip/CMakeLists.txt index 77b00ee94..c8bbc3707 100644 --- a/src/occa/internal/modes/hip/CMakeLists.txt +++ b/src/occa/internal/modes/hip/CMakeLists.txt @@ -1,3 +1,12 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp - utils.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp + utils.cpp +) diff --git a/src/occa/internal/modes/metal/CMakeLists.txt b/src/occa/internal/modes/metal/CMakeLists.txt index fb79a1554..10fbb2b20 100644 --- a/src/occa/internal/modes/metal/CMakeLists.txt +++ b/src/occa/internal/modes/metal/CMakeLists.txt @@ -1,2 +1,11 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp +) diff --git a/src/occa/internal/modes/opencl/CMakeLists.txt b/src/occa/internal/modes/opencl/CMakeLists.txt index 77b00ee94..c8bbc3707 100644 --- a/src/occa/internal/modes/opencl/CMakeLists.txt +++ b/src/occa/internal/modes/opencl/CMakeLists.txt @@ -1,3 +1,12 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp - utils.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp + utils.cpp +) diff --git a/src/occa/internal/modes/openmp/CMakeLists.txt b/src/occa/internal/modes/openmp/CMakeLists.txt index 8d70dd6fa..a4d89a71c 100644 --- a/src/occa/internal/modes/openmp/CMakeLists.txt +++ b/src/occa/internal/modes/openmp/CMakeLists.txt @@ -1 +1,6 @@ -target_sources(libocca PRIVATE device.cpp registration.cpp utils.cpp) +target_sources(libocca + PRIVATE + device.cpp + registration.cpp + utils.cpp +) diff --git a/src/occa/internal/modes/serial/CMakeLists.txt b/src/occa/internal/modes/serial/CMakeLists.txt index fb79a1554..10fbb2b20 100644 --- a/src/occa/internal/modes/serial/CMakeLists.txt +++ b/src/occa/internal/modes/serial/CMakeLists.txt @@ -1,2 +1,11 @@ -target_sources(libocca PRIVATE buffer.cpp device.cpp kernel.cpp - memory.cpp memoryPool.cpp registration.cpp stream.cpp streamTag.cpp) +target_sources(libocca + PRIVATE + buffer.cpp + device.cpp + kernel.cpp + memory.cpp + memoryPool.cpp + registration.cpp + stream.cpp + streamTag.cpp +) diff --git a/src/occa/internal/utils/CMakeLists.txt b/src/occa/internal/utils/CMakeLists.txt index f244b7954..3713de8f7 100644 --- a/src/occa/internal/utils/CMakeLists.txt +++ b/src/occa/internal/utils/CMakeLists.txt @@ -1,3 +1,15 @@ -target_sources(libocca PRIVATE cli.cpp env.cpp gc.cpp lex.cpp misc.cpp - string.cpp styling.cpp sys.cpp testing.cpp transpiler_utils.cpp - trie.cpp vector.cpp) +target_sources(libocca + PRIVATE + cli.cpp + env.cpp + gc.cpp + lex.cpp + misc.cpp + string.cpp + styling.cpp + sys.cpp + testing.cpp + transpiler_utils.cpp + trie.cpp + vector.cpp +) diff --git a/src/types/CMakeLists.txt b/src/types/CMakeLists.txt index 4c16631de..6d5226ba8 100644 --- a/src/types/CMakeLists.txt +++ b/src/types/CMakeLists.txt @@ -1,2 +1,7 @@ -target_sources(libocca PRIVATE dim.cpp json.cpp primitive.cpp - typeinfo.cpp) +target_sources(libocca + PRIVATE + dim.cpp + json.cpp + primitive.cpp + typeinfo.cpp +) diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index 1229c0141..fc288153d 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -1,2 +1,8 @@ -target_sources(libocca PRIVATE exception.cpp hash.cpp io.cpp logging.cpp - mutex.cpp) +target_sources(libocca + PRIVATE + exception.cpp + hash.cpp + io.cpp + logging.cpp + mutex.cpp +) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index fc6514640..7602f1946 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -28,12 +28,29 @@ function(add_occa_test test_source) RUNTIME_OUTPUT_DIRECTORY ${test_directory}) # Build config - target_link_libraries(${cmake_test_target} OCCA::libocca ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS}) - target_include_directories(${cmake_test_target} PRIVATE - $) + target_link_libraries(${cmake_test_target} + PRIVATE + OCCA::c_api + OCCA::libocca + ${CMAKE_THREAD_LIBS_INIT} + ${CMAKE_DL_LIBS} + ) + if (OCCA_ENABLE_FORTRAN) + target_link_libraries(${cmake_test_target} + PRIVATE + OCCA::fortran_api + ) + endif() + + target_include_directories(${cmake_test_target} + PRIVATE + $ + ) if (${test_source} MATCHES "typedefs.f90") - target_link_libraries(${cmake_test_target} libtypedefs_helper) + target_link_libraries(${cmake_test_target} + PRIVATE + libtypedefs_helper) endif() add_test( From cd96fd57f6a5a8ab367e42afdfae8471d62b6c98 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Fri, 7 Nov 2025 18:19:55 +0000 Subject: [PATCH 2/2] Move c/kernel_fortran_interface.cpp to fortran/ --- src/c/CMakeLists.txt | 1 - src/fortran/CMakeLists.txt | 1 + src/{c => fortran}/kernel_fortran_interface.cpp | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename src/{c => fortran}/kernel_fortran_interface.cpp (100%) diff --git a/src/c/CMakeLists.txt b/src/c/CMakeLists.txt index d32db5aef..039788c83 100644 --- a/src/c/CMakeLists.txt +++ b/src/c/CMakeLists.txt @@ -8,7 +8,6 @@ target_sources(c_api io.cpp json.cpp kernel.cpp - kernel_fortran_interface.cpp memory.cpp memoryPool.cpp scope.cpp diff --git a/src/fortran/CMakeLists.txt b/src/fortran/CMakeLists.txt index 96a899b2b..923586169 100644 --- a/src/fortran/CMakeLists.txt +++ b/src/fortran/CMakeLists.txt @@ -15,6 +15,7 @@ target_sources(fortran_api occa_stream_m.f90 occa_typedefs_m.f90 occa_types_m.f90 + kernel_fortran_interface.cpp ) target_link_libraries(fortran_api diff --git a/src/c/kernel_fortran_interface.cpp b/src/fortran/kernel_fortran_interface.cpp similarity index 100% rename from src/c/kernel_fortran_interface.cpp rename to src/fortran/kernel_fortran_interface.cpp