diff --git a/.gitignore b/.gitignore index d5a59b5..2410d1c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -/libjluna*.so -/libjluna_c_adapter*.so +/libjluna*.* +/libjluna_c_adapter*.* /.src/include_julia.inl /.benchmark/results/ /docs/bckp.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 0017d30..675325b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) project(jluna) set(CMAKE_CXX_STANDARD 20) -set(CMAKE_BUILD_TYPE Debug) +set(CMAKE_BUILD_TYPE Release) # compiler support if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION STRGREATER_EQUAL "12.0.0") @@ -131,13 +131,21 @@ add_library(jluna_c_adapter SHARED .src/c_adapter.cpp ) +target_include_directories(jluna_c_adapter + PUBLIC $ + # users should include julia on their own + PUBLIC $ +) + +target_compile_features(jluna_c_adapter PUBLIC cxx_std_20) +target_link_libraries(jluna_c_adapter PUBLIC $) + set_target_properties(jluna_c_adapter PROPERTIES LINKER_LANGUAGE C LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR} ) -target_link_libraries(jluna_c_adapter ${JULIA_LIB}) -target_link_libraries(jluna jluna_c_adapter ${JULIA_LIB}) +target_link_libraries(jluna PUBLIC jluna_c_adapter) ### EXECUTABLES ### @@ -151,4 +159,32 @@ target_link_libraries(JLUNA_TEST jluna ${JULIA_LIB}) # .benchmark/main.cpp # .benchmark/benchmark.hpp #) -#target_link_libraries(JLUNA_BENCHMARK jluna ${JULIA_LIB}) \ No newline at end of file +#target_link_libraries(JLUNA_BENCHMARK jluna ${JULIA_LIB}) + +### INSTALL ### + +# TODO: ConfigVersion.cmake +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/jluna-config.cmake [[ +if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION STRGREATER_EQUAL "12.0.0") OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION STRGREATER_EQUAL "10.0.0"))) + message(FATAL_ERROR "Currently, the only supported compilers are G++10, G++11 (recommended) and Clang-12") +endif() +include("${CMAKE_CURRENT_LIST_DIR}/jluna-targets.cmake") +]]) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/jluna-config.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jluna +) + +install(TARGETS jluna jluna_c_adapter EXPORT jluna_targets) + +install(EXPORT jluna_targets + FILE jluna-targets.cmake + NAMESPACE jluna:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jluna +) + +install(FILES jluna.hpp ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/jluna) +install(DIRECTORY include .src DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/jluna) + +target_include_directories(jluna INTERFACE $) \ No newline at end of file