]> www.ginac.de Git - ginac.git/blobdiff - ginac/CMakeLists.txt
[PATCH] Improve normalisation of negative exponents.
[ginac.git] / ginac / CMakeLists.txt
index c872aad3848dd15c2c8afe7ab42093fe62e5a18b..5b0937c4089a93b3831201ae073a7838d60fe73a 100644 (file)
@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
 
 set(ginaclib_sources
     add.cpp
@@ -21,7 +20,9 @@ set(ginaclib_sources
     inifcns.cpp
     inifcns_gamma.cpp
     inifcns_nstdsums.cpp
+    inifcns_elliptic.cpp
     inifcns_trans.cpp
+    integration_kernel.cpp
     integral.cpp
     lst.cpp
     matrix.cpp
@@ -43,9 +44,11 @@ set(ginaclib_sources
     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
@@ -69,6 +72,7 @@ set(ginaclib_public_headers
     class_info.h
     clifford.h
     color.h
+    compiler.h
     constant.h
     container.h
     ex.h
@@ -86,6 +90,7 @@ set(ginaclib_public_headers
     indexed.h 
     inifcns.h
     integral.h
+    integration_kernel.h
     lst.h
     matrix.h
     mul.h
@@ -114,7 +119,7 @@ set(ginaclib_private_headers
     utils.h
     crc32.h
     hash_seed.h
-    compiler.h
+    utils_multi_iterator.h
     parser/lexer.h
     parser/debug.h
     polynomial/gcd_euclid.h
@@ -145,11 +150,27 @@ set(ginaclib_private_headers
 )
 
 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")
@@ -158,18 +179,26 @@ if (NOT BUILD_SHARED_LIBS)
        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)