]> www.ginac.de Git - ginac.git/blob - ginac/CMakeLists.txt
Finalize 1.8.1 release.
[ginac.git] / ginac / CMakeLists.txt
1
2 set(ginaclib_sources
3     add.cpp
4     archive.cpp
5     basic.cpp
6     clifford.cpp
7     color.cpp
8     constant.cpp
9     excompiler.cpp
10     ex.cpp
11     expair.cpp
12     expairseq.cpp
13     exprseq.cpp
14     factor.cpp
15     fail.cpp
16     fderivative.cpp
17     function.cpp
18     idx.cpp
19     indexed.cpp
20     inifcns.cpp
21     inifcns_gamma.cpp
22     inifcns_nstdsums.cpp
23     inifcns_elliptic.cpp
24     inifcns_trans.cpp
25     integration_kernel.cpp
26     integral.cpp
27     lst.cpp
28     matrix.cpp
29     mul.cpp
30     ncmul.cpp
31     normal.cpp
32     numeric.cpp
33     operators.cpp
34     parser/default_reader.cpp
35     parser/lexer.cpp
36     parser/parse_binop_rhs.cpp
37     parser/parse_context.cpp
38     parser/parser_compat.cpp
39     parser/parser.cpp
40     polynomial/chinrem_gcd.cpp
41     polynomial/collect_vargs.cpp
42     polynomial/cra_garner.cpp
43     polynomial/divide_in_z_p.cpp
44     polynomial/gcd_uvar.cpp
45     polynomial/mgcd.cpp
46     polynomial/mod_gcd.cpp
47     polynomial/normalize.cpp
48     polynomial/optimal_vars_finder.cpp
49     polynomial/pgcd.cpp
50     polynomial/primpart_content.cpp
51     polynomial/remainder.cpp
52     polynomial/upoly_io.cpp
53     power.cpp
54     print.cpp
55     pseries.cpp
56     registrar.cpp
57     relational.cpp
58     remember.cpp
59     symbol.cpp
60     symmetry.cpp
61     tensor.cpp
62     utils.cpp
63     wildcard.cpp
64 )
65
66 set(ginaclib_public_headers
67     ginac.h
68     add.h
69     archive.h
70     assertion.h
71     basic.h
72     class_info.h
73     clifford.h
74     color.h
75     compiler.h
76     constant.h
77     container.h
78     ex.h
79     excompiler.h
80     expair.h
81     expairseq.h 
82     exprseq.h
83     fail.h
84     factor.h
85     fderivative.h
86     flags.h
87     ${CMAKE_CURRENT_BINARY_DIR}/function.h
88     hash_map.h
89     idx.h
90     indexed.h 
91     inifcns.h
92     integral.h
93     integration_kernel.h
94     lst.h
95     matrix.h
96     mul.h
97     ncmul.h
98     normal.h
99     numeric.h
100     operators.h 
101     power.h
102     print.h
103     pseries.h
104     ptr.h
105     registrar.h
106     relational.h
107     structure.h 
108     symbol.h
109     symmetry.h
110     tensor.h
111     version.h
112     wildcard.h 
113     parser/parser.h 
114     parser/parse_context.h
115 )
116
117 set(ginaclib_private_headers
118     remember.h
119     utils.h
120     crc32.h
121     hash_seed.h
122     utils_multi_iterator.h
123     parser/lexer.h
124     parser/debug.h
125     polynomial/gcd_euclid.h
126     polynomial/remainder.h
127     polynomial/normalize.h
128     polynomial/upoly.h
129     polynomial/ring_traits.h
130     polynomial/mod_gcd.h
131     polynomial/cra_garner.h
132     polynomial/upoly_io.h
133     polynomial/prem_uvar.h
134     polynomial/eval_uvar.h
135     polynomial/interpolate_padic_uvar.h
136     polynomial/sr_gcd_uvar.h
137     polynomial/heur_gcd_uvar.h
138     polynomial/chinrem_gcd.h
139     polynomial/collect_vargs.h
140     polynomial/divide_in_z_p.h
141     polynomial/euclid_gcd_wrap.h
142     polynomial/eval_point_finder.h
143     polynomial/newton_interpolate.h
144     polynomial/optimal_vars_finder.h
145     polynomial/pgcd.h
146     polynomial/poly_cra.h
147     polynomial/primes_factory.h
148     polynomial/smod_helpers.h
149     polynomial/debug.h
150 )
151
152 add_library(ginac ${ginaclib_sources})
153 add_library(ginac::ginac ALIAS ginac)
154 set_target_properties(ginac PROPERTIES
155         SOVERSION ${ginaclib_soversion}
156         VERSION ${ginaclib_version})
157 target_compile_definitions(ginac
158         PUBLIC $<BUILD_INTERFACE:IN_GINAC>
159         PRIVATE -DLIBEXECDIR="${LIBEXECDIR}/" HAVE_CONFIG_H
160 )
161 target_link_libraries(ginac PUBLIC cln::cln ${LIBDL_LIBRARIES})
162 target_include_directories(ginac PUBLIC
163         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
164         $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
165         $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/..>
166         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
167 )
168
169 if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND BUILD_SHARED_LIBS)
170         set_target_properties(ginac PROPERTIES
171                 LINK_FLAGS "-Wl,--enable-auto-import -Wl,--export-all-symbols"
172         )
173 endif()
174
175 if (NOT BUILD_SHARED_LIBS)
176         set_target_properties(ginac PROPERTIES OUTPUT_NAME "ginac")
177         # Avoid the static library vs import library conflict (necessary for
178         # m$ toolchain).
179         set_target_properties(ginac PROPERTIES PREFIX "lib")
180 endif()
181
182 install(TARGETS ginac
183                       EXPORT ginac-exports
184                       LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
185                       RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
186                       ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
187 )
188 install(FILES ${ginaclib_public_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ginac")
189 install(EXPORT ginac-exports
190         FILE ginac-targets.cmake
191         NAMESPACE ginac::
192         DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ginac
193 )
194
195 add_custom_command(
196         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/function.h
197         COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.h ${CMAKE_CURRENT_SOURCE_DIR}/function.hppy
198         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/function.hppy ${CMAKE_CURRENT_SOURCE_DIR}/function.py)
199
200 add_custom_command(
201         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/function.cpp
202         COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/function.py -o ${CMAKE_CURRENT_BINARY_DIR}/function.cpp ${CMAKE_CURRENT_SOURCE_DIR}/function.cppy
203         DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/function.h ${CMAKE_CURRENT_SOURCE_DIR}/function.cppy ${CMAKE_CURRENT_SOURCE_DIR}/function.py)
204