-cmake_minimum_required(VERSION 2.6)
set(ginaclib_sources
add.cpp
inifcns.cpp
inifcns_gamma.cpp
inifcns_nstdsums.cpp
+ inifcns_elliptic.cpp
inifcns_trans.cpp
+ integration_kernel.cpp
integral.cpp
lst.cpp
matrix.cpp
polynomial/gcd_uvar.cpp
polynomial/mgcd.cpp
polynomial/mod_gcd.cpp
+ polynomial/normalize.cpp
polynomial/optimal_vars_finder.cpp
polynomial/pgcd.cpp
polynomial/primpart_content.cpp
+ polynomial/remainder.cpp
polynomial/upoly_io.cpp
power.cpp
print.cpp
class_info.h
clifford.h
color.h
+ compiler.h
constant.h
container.h
ex.h
indexed.h
inifcns.h
integral.h
+ integration_kernel.h
lst.h
matrix.h
mul.h
utils.h
crc32.h
hash_seed.h
- compiler.h
+ utils_multi_iterator.h
parser/lexer.h
parser/debug.h
polynomial/gcd_euclid.h
)
add_library(ginac ${ginaclib_sources})
+add_library(ginac::ginac ALIAS ginac)
set_target_properties(ginac PROPERTIES
SOVERSION ${ginaclib_soversion}
VERSION ${ginaclib_version})
-target_link_libraries(ginac ${CLN_LIBRARIES})
-include_directories(${CMAKE_SOURCE_DIR}/ginac)
+target_compile_definitions(ginac
+ PUBLIC $<BUILD_INTERFACE:IN_GINAC>
+ PRIVATE -DLIBEXECDIR="${LIBEXECDIR}/" HAVE_CONFIG_H
+)
+target_link_libraries(ginac PUBLIC cln::cln ${LIBDL_LIBRARIES})
+target_include_directories(ginac PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/..>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+)
+
+if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND BUILD_SHARED_LIBS)
+ set_target_properties(ginac PROPERTIES
+ LINK_FLAGS "-Wl,--enable-auto-import -Wl,--export-all-symbols"
+ )
+endif()
if (NOT BUILD_SHARED_LIBS)
set_target_properties(ginac PROPERTIES OUTPUT_NAME "ginac")
set_target_properties(ginac PROPERTIES PREFIX "lib")
endif()
-install(TARGETS ginac LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
- RUNTIME DESTINATION "${BIN_INSTALL_DIR}"
- ARCHIVE DESTINATION "${LIB_INSTALL_DIR}")
-install(FILES ${ginaclib_public_headers} DESTINATION "${INCLUDE_INSTALL_DIR}/ginac")
+install(TARGETS ginac
+ EXPORT ginac-exports
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+)
+install(FILES ${ginaclib_public_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ginac")
+install(EXPORT ginac-exports
+ FILE ginac-targets.cmake
+ NAMESPACE ginac::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ginac
+)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/function.h
- COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.h ${CMAKE_CURRENT_SOURCE_DIR}/function.hppy
+ COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.h ${CMAKE_CURRENT_SOURCE_DIR}/function.hppy
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/function.hppy ${CMAKE_CURRENT_SOURCE_DIR}/function.py)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/function.cpp
- COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.cpp ${CMAKE_CURRENT_SOURCE_DIR}/function.cppy
+ COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.cpp ${CMAKE_CURRENT_SOURCE_DIR}/function.cppy
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/function.h ${CMAKE_CURRENT_SOURCE_DIR}/function.cppy ${CMAKE_CURRENT_SOURCE_DIR}/function.py)