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