add_library(plutils STATIC "") INCLUDE(plutils/CMakeLists.txt) if(BUILD_SHARED_LIBS) add_library(parlibc-shared SHARED "") target_sources(parlibc-shared PRIVATE parlib.c bexchange.c transpose.c PUBLIC parlib.h) target_include_directories(parlibc-shared PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) target_link_libraries(parlibc-shared PRIVATE plutils PUBLIC $<$<BOOL:${MPI_FOUND}>:MPI::MPI_C>) set_target_properties(parlibc-shared PROPERTIES POSITION_INDEPENDENT_CODE 1 VISIBILITY_INLINES_HIDDEN 1 SOVERSION ${PROJECT_VERSION_MAJOR} OUTPUT_NAME "parlib" PUBLIC_HEADER "parlib.h" MACOSX_RPATH ON ) endif(BUILD_SHARED_LIBS) if(BUILD_STATIC_LIBS) add_library(parlibc-static STATIC "") target_sources(parlibc-static PRIVATE parlib.c bexchange.c transpose.c PUBLIC parlib.h) set_target_properties(parlibc-static PROPERTIES POSITION_INDEPENDENT_CODE 1 SOVERSION ${PROJECT_VERSION_MAJOR} ARCHIVE_OUTPUT_NAME "parlib" PUBLIC_HEADER "parlib.h" ) target_link_libraries(parlibc-static PRIVATE plutils PUBLIC $<$<BOOL:${MPI_FOUND}>:MPI::MPI_C>) target_include_directories(parlibc-static PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) endif(BUILD_STATIC_LIBS) #if (CMAKE_BUILD_TYPE) # file(COPY parlib.h # DESTINATION # ${CMAKE_BINARY_DIR}/include) #endif() #install(TARGETS parlibc-static DESTINATION ${CMAKE_BINARY_DIR}/lib) if( BUILD_FORT_LIBS ) if(BUILD_STATIC_LIBS) include(FortranCInterface) FortranCInterface_VERIFY() FortranCInterface_HEADER(${CMAKE_CURRENT_SOURCE_DIR}/FC.h MACRO_NAMESPACE "FC_") message(STATUS "FORTRAN_C_INTEFACE TEST: ${FortranCInterface_VERIFIED_C}") add_definitions(-DFC_MANGLE=1) add_library(parlibf-static STATIC "") target_sources( parlibf-static PRIVATE parlibf.c bexchangef.c transposef.c FC.h PUBLIC parlibf.h) target_link_libraries(parlibf-static PRIVATE plutils PUBLIC MPI::MPI_C parlibc-static) set_target_properties(parlibf-static PROPERTIES ARCHIVE_OUTPUT_NAME "parlibf" PUBLIC_HEADER "parlibf.h" LINKER_LANGUAGE Fortran ) target_include_directories(parlibf-static PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) endif(BUILD_STATIC_LIBS) if(BUILD_SHARED_LIBS) add_library(parlibf-shared SHARED "") target_sources(parlibf-shared PRIVATE parlibf.c bexchangef.c transposef.c FC.h PUBLIC parlibf.h) target_link_libraries(parlibf-shared PRIVATE plutils PRIVATE PUBLIC MPI::MPI_C parlibc-shared) set_target_properties(parlibf-shared PROPERTIES POSITION_INDEPENDENT_CODE 1 VISIBILITY_INLINES_HIDDEN 1 SOVERSION ${PROJECT_VERSION_MAJOR} OUTPUT_NAME "parlibf" PUBLIC_HEADER "parlibf.h" MACOSX_RPATH ON LINKER_LANGUAGE Fortran ) target_include_directories(parlibf-shared PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) endif(BUILD_SHARED_LIBS) endif(BUILD_FORT_LIBS) #~TESTS if(BUILD_FORT_LIBS) if(BUILD_SHARED_LIBS) add_executable(parlibf_test_shared parlibf_test.f90) target_link_libraries(parlibf_test_shared parlibf-shared) endif(BUILD_SHARED_LIBS) if(BUILD_STATIC_LIBS) add_executable(parlibf_test_static parlibf_test.f90) target_link_libraries(parlibf_test_static parlibf-static) endif(BUILD_STATIC_LIBS) endif(BUILD_FORT_LIBS) if(BUILD_SHARED_LIBS) add_executable(parlibc_test_shared parlibc-test.c) target_link_libraries(parlibc_test_shared parlibc-shared) endif(BUILD_SHARED_LIBS) if(BUILD_STATIC_LIBS) add_executable(parlibc_test_static parlibc-test.c) target_link_libraries(parlibc_test_static parlibc-static) endif(BUILD_STATIC_LIBS) #Installation if(BUILD_STATIC_LIBS) install( TARGETS parlibc-static ARCHIVE DESTINATION ${INSTALL_LIBDIR} COMPONENT lib RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT bin LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT lib PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT dev ) endif(BUILD_STATIC_LIBS) if(BUILD_SHARED_LIBS) install( TARGETS parlibc-shared ARCHIVE DESTINATION ${INSTALL_LIBDIR} COMPONENT lib RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT bin LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT lib PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT dev ) endif(BUILD_SHARED_LIBS) if( BUILD_FORT_LIBS ) if(BUILD_STATIC_LIBS) install( TARGETS parlibf-static ARCHIVE DESTINATION ${INSTALL_LIBDIR} COMPONENT lib RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT bin LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT lib PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT dev ) endif(BUILD_STATIC_LIBS) if(BUILD_SHARED_LIBS) install( TARGETS parlibf-shared ARCHIVE DESTINATION ${INSTALL_LIBDIR} COMPONENT lib RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT bin LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT lib PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT dev ) endif(BUILD_SHARED_LIBS) endif(BUILD_FORT_LIBS) #adding man pages add_subdirectory(man)