"Fossies" - the Fresh Open Source Software Archive 
Member "TeXmacs-2.1.2-src/CMakeLists.txt" (5 May 2022, 29203 Bytes) of package /linux/misc/TeXmacs-2.1.2-src.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1
2 ###############################################################################
3 #
4 # MODULE : CMakeLists.txt
5 # DESCRIPTION : CMake file for TeXmacs
6 # COPYRIGHT : (C) 2008-2009 Massimiliano Gubinelli
7 # (C) 2017-2020 Darcy Shen
8 #
9 # This software falls under the GNU general public license version 3 or later.
10 # It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
11 # in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
12
13
14 # The name of our project is "TEXMACS". CMakeLists files in this project can
15 # refer to the root source directory of the project as ${TEXMACS_SOURCE_DIR} and
16 # to the root binary directory of the project as ${TEXMACS_BINARY_DIR}.
17
18
19 ### --------------------------------------------------------------------
20 ### Basic settings (project independent)
21 ### --------------------------------------------------------------------
22
23 cmake_minimum_required (VERSION 3.13)
24
25 set (CMAKE_CXX_STANDARD 11)
26 set (CMAKE_AUTOMOC ON)
27 set (CMAKE_INCLUDE_CURRENT_DIR ON)
28
29 if (NOT CMAKE_BUILD_TYPE)
30 set (CMAKE_BUILD_TYPE Debug CACHE STRING
31 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
32 FORCE)
33 endif (NOT CMAKE_BUILD_TYPE)
34
35 #INCLUDE(CMakeDetermineSystem)
36
37 # Configure CCache if available
38 find_program (CCACHE_FOUND ccache)
39 if (CCACHE_FOUND)
40 set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
41 set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
42 endif (CCACHE_FOUND)
43
44
45 ### --------------------------------------------------------------------
46 ### Project name
47 ### --------------------------------------------------------------------
48
49 project (TEXMACS CXX C) # check for C/C++ compiler
50
51 set (PACKAGE TeXmacs)
52 set (CMAKE_MODULE_PATH ${TEXMACS_SOURCE_DIR}/cmake)
53
54 set (VERSION_MAJOR "2")
55 set (VERSION_MINOR "1")
56 set (VERSION_BUILD "2")
57 #set (TEXMACS_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD})
58 set (TEXMACS_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
59
60 set (DEVEL_VERSION ${TEXMACS_VERSION})
61 set (DEVEL_RELEASE "1")
62 set (STABLE_VERSION ${TEXMACS_VERSION})
63 set (STABLE_RELEASE "1")
64 set (TEXMACS_REVISION ${TEXMACS_VERSION})
65
66
67 ### --------------------------------------------------------------------
68 ### Options
69 ### --------------------------------------------------------------------
70 if (NOT TEXMACS_GUI)
71 if (APPLE)
72 set (TEXMACS_GUI "Qt4" CACHE STRING "TeXmacs Gui (Qt, X11, Aqua)")
73 else (APPLE)
74 set (TEXMACS_GUI "Qt" CACHE STRING "TeXmacs Gui (Qt, X11, Aqua)")
75 endif (APPLE)
76 endif (NOT TEXMACS_GUI)
77
78 option (QTPIPES "use Qt pipes" ON)
79
80 option (USE_SQLITE3 "Use SQLite3" ON)
81 if (USE_SQLITE3)
82 find_package (SQLite3)
83 option (LINKED_SQLITE3 "Use Linked SQLite3" ON)
84 endif (USE_SQLITE3)
85
86 option (USE_FREETYPE "use Freetype" ON)
87 if (USE_FREETYPE)
88 find_package (Freetype)
89 option (LINKED_FREETYPE "linked Freetype" ON)
90 endif (USE_FREETYPE)
91
92 option (USE_CAIRO "use Cairo" OFF)
93 if (USE_CAIRO)
94 find_package(Cairo)
95 option (LINKED_CAIRO "linked Cairo" ON)
96 endif (USE_CAIRO)
97
98 option (USE_IMLIB2 "use Imlib2" OFF)
99 if (USE_IMLIB2)
100 find_package(Imlib2)
101 option (LINKED_IMLIB2 "linked Imlib2" ON)
102 endif (USE_IMLIB2)
103
104 option (USE_SPARKLE "use Sparkle" OFF)
105
106 option (PDFHUMMUS_NO_TIFF "Disable TIFF in PDF Hummus" ON)
107
108 option (USE_GMP "use GMP" ON)
109 if (USE_GMP)
110 find_package (GMP)
111 endif (USE_GMP)
112
113 if (WIN32)
114 option (OS_MINGW "Using OS MINGW" ON)
115 else (WIN32)
116 option (OS_MINGW "Using OS MINGW" OFF)
117 endif (WIN32)
118
119 if (APPLE)
120 set (MACOSX_EXTENSIONS 1)
121 set (OS_MACOS 1)
122 option (MACOS_QT_MENU "Disable MacOS native menu" OFF)
123 endif (APPLE)
124
125
126 ### --------------------------------------------------------------------
127 ### Include standard modules
128 ### --------------------------------------------------------------------
129
130 include (CheckFunctionExists)
131 include (CheckLibraryExists)
132 include (CheckIncludeFile)
133 include (CheckTypeSize)
134 include (FindPkgConfig)
135 include (CheckCSourceCompiles)
136 include (FindX11)
137
138
139 ### --------------------------------------------------------------------
140 ### Check for standard functionalities
141 ### --------------------------------------------------------------------
142 check_type_size (FILE HAVE_FILE)
143 check_type_size (intptr_t HAVE_INTPTR_T)
144 check_type_size (time_t HAVE_TIME_T)
145 check_include_file (inttypes.h HAVE_INTTYPES_H)
146 check_include_file (memory.h HAVE_MEMORY_H)
147 check_include_file (stdlib.h HAVE_STDLIB_H)
148 check_include_file (strings.h HAVE_STRINGS_H)
149 check_include_file (string.h HAVE_STRING_H)
150 check_include_file (sys/stat.h HAVE_SYS_STAT_H)
151 check_include_file (unistd.h HAVE_UNISTD_H)
152 check_include_file (X11/Xlib.h HAVE_X11_XLIB_H)
153 check_include_file (X11/Xutil.h HAVE_X11_XUTIL_H)
154 check_include_file (pty.h HAVE_PTY_H)
155 check_include_file (util.h HAVE_UTIL_H)
156 check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)
157
158
159 ### --------------------------------------------------------------------
160 ### Check for dl library
161 ### --------------------------------------------------------------------
162
163 check_function_exists (dlopen HAVE_DLOPEN)
164
165 if (NOT ${HAVE_DLOPEN})
166 check_library_exists (dl dlopen "" HAVE_DLOPEN)
167 if (${HAVE_DLOPEN})
168 set (CONFIG_BDL "-ldl")
169 endif (${HAVE_DLOPEN})
170 endif (NOT ${HAVE_DLOPEN})
171
172 if (NOT ${HAVE_DLOPEN})
173 check_library_exists (dld dld_link "" HAVE_DLOPEN)
174 if (${HAVE_DLOPEN})
175 set (CONFIG_BDL "-ldl")
176 endif (${HAVE_DLOPEN})
177 endif (NOT ${HAVE_DLOPEN})
178
179 if (NOT ${HAVE_DLOPEN})
180 check_function_exists (shl_load HAVE_DLOPEN)
181 if (${HAVE_DLOPEN})
182 set (CONFIG_BDL "-ldl")
183 endif (${HAVE_DLOPEN})
184 endif (NOT ${HAVE_DLOPEN})
185
186
187 if (${HAVE_DLOPEN})
188 #SET(TM_DYNAMIC_LINKING 1) # dynamic linking works
189 endif (${HAVE_DLOPEN})
190
191 ### --------------------------------------------------------------------
192 ### Handle different systems case by case
193 ### --------------------------------------------------------------------
194
195 set (CONFIG_OS "GNU_LINUX")
196 set (CONFIG_OS_SUFFIX "gnu-linux")
197 set (CONFIG_CXXTEMPLATE "")
198 set (CONFIG_STD_SETENV "#define STD_SETENV")
199 set (CONFIG_SO "so")
200 set (CONFIG_LIB_PATH "LD_LIBRARY_PATH")
201 set (CONFIG_CHMOD "chmod -f")
202 set (CONFIG_CXXOPTIMIZE "-O2")
203 set (CONFIG_BSTATIC "-Wl,-Bstatic")
204 set (CONFIG_BSHARED "-Wl,-Bdynamic")
205 set (CONFIG_BFLAGS "")
206 set (CONFIG_BPATH "-Wl,-rpath,")
207 set (CONFIG_WORD_LENGTH "4")
208 set (CONFIG_WORD_LENGTH_INC "3")
209 set (CONFIG_WORD_MASK "0xfffffffc")
210 set (CONFIG_MAX_FAST "260 // WORD_LENGTH more than power of 2")
211
212 check_type_size ("void*" SIZE_OF_VOIDP)
213
214 message (STATUS "Check if we are on a 64-bits computer")
215 if (${SIZE_OF_VOIDP} EQUAL 8)
216 set (CONFIG_WORD_LENGTH "8")
217 set (CONFIG_WORD_LENGTH_INC "7")
218 set (CONFIG_WORD_MASK "0xfffffffffffffff8")
219 set (CONFIG_MAX_FAST "264 // WORD_LENGTH more than power of 2")
220 endif (${SIZE_OF_VOIDP} EQUAL 8)
221
222
223 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
224 message (STATUS "final adjustments for an Intel or AMD GNU/Linux host")
225 set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
226 endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
227
228 if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
229 message (STATUS "final adjustments for an Intel or AMD GNU/BSD host")
230 set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
231 endif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
232
233 if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
234 message (STATUS "final adjustments for an Intel or AMS Solaris host")
235 set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
236 set (CONFIG_CXXOPTIMIZE "-O3")
237 set (CONFIG_BPATH "-Wl,-R,")
238 # SET(X11_LDFLAGS "${X_LIBS} -lXext -lX11 -lsocket")
239 endif (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
240
241 if (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN_NT-5.1")
242 message (STATUS "final adjustments for cygwin host")
243 set (CONFIG_OS "CYGWIN")
244 set (CONFIG_BFLAGS "-Wl,-stack,8388608")
245 endif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN_NT-5.1")
246
247 ### --------------------------------------------------------------------
248 ### Package Data
249 ### --------------------------------------------------------------------
250
251 set (PACKAGE_BUGREPORT 1)
252 set (PACKAGE_NAME 1)
253 set (PACKAGE_STRING 1)
254 set (PACKAGE_TARNAME 1)
255 set (PACKAGE_URL 1)
256 set (PACKAGE_VERSION 1)
257
258 ### --------------------------------------------------------------------
259 ### Memory allocation options
260 ### --------------------------------------------------------------------
261
262 #if(${DISABLE_FASTALLOC})
263 # set(NO_FAST_ALLOC 1)
264 #endif(${DISABLE_FASTALLOC})
265
266
267 ### --------------------------------------------------------------------
268 ### Experimental options
269 ### --------------------------------------------------------------------
270
271 # SET(EXPERIMENTAL 1)
272
273 ### --------------------------------------------------------------------
274 ### Test for Libraries
275 ### --------------------------------------------------------------------
276
277 find_package (PNG)
278 find_package (Iconv)
279 find_package (ZLIB)
280 find_package (JPEG)
281 #FIND_PACKAGE(Axel)
282
283 ### --------------------------------------------------------------------
284 ### Some Guile related adjustements
285 ### --------------------------------------------------------------------
286
287 # Allow for selection of Scheme implementation
288 set(SCHEME_IMPL "default" CACHE STRING "Implementation of Scheme to compile for.")
289 set_property(CACHE SCHEME_IMPL PROPERTY STRINGS default guile-1.8 guile-2.0 guile-2.2 guile-3.0 chez s7)
290 message(STATUS "Looking for Scheme implementation: " ${SCHEME_IMPL})
291
292 if (${SCHEME_IMPL} STREQUAL "default")
293 # Find Guile and determine which version we are using.
294 # Look for guile versions in this order: 1.8 > 3.0 > 2.2 > 2.0
295 pkg_search_module (Guile REQUIRED guile-1.8 guile-3.0 guile-2.2 guile-2.0)
296 if (NOT Guile_FOUND)
297 message(FATAL_ERROR "Guile not installed or pkg-config cannot detect it.")
298 endif ()
299 elseif ( (${SCHEME_IMPL} STREQUAL "guile-1.8")
300 OR (${SCHEME_IMPL} STREQUAL "guile-2.0")
301 OR (${SCHEME_IMPL} STREQUAL "guile-2.2")
302 OR (${SCHEME_IMPL} STREQUAL "guile-3.0") )
303 pkg_check_modules (Guile REQUIRED ${SCHEME_IMPL})
304 elseif ((${SCHEME_IMPL} STREQUAL "chez") OR (${SCHEME_IMPL} STREQUAL "s7"))
305 message(FATAL_ERROR "Selected Scheme implementation not implemented yet.")
306 else ()
307 message(FATAL_ERROR "Incorrect scheme implementation selected.")
308 endif()
309
310 if (Guile_VERSION VERSION_LESS 2.0)
311 set (CONFIG_GUILE_SERIAL "C")
312 option (GUILE_C "Using Guile 1.8.x" ON)
313 message (STATUS "Using GUILE_C: " ${Guile_VERSION})
314 else ()
315 set (CONFIG_GUILE_SERIAL "D")
316 option (GUILE_D "Using Guile 2.x or 3.x" ON)
317 set (SCM_SIZET size_t)
318 message (STATUS "Using GUILE_D: " ${Guile_VERSION})
319 endif ()
320
321 set (CMAKE_REQUIRED_FLAGS "-Werror ${Guile_CFLAGS}")
322 set (CMAKE_REQUIRED_INCLUDES ${Guile_INCLUDE_DIRS})
323 set (guile_str_size_t size_t)
324
325 message (STATUS "Checking whether ... arguments behave correctly")
326
327 check_c_source_compiles ("
328 #include <guile/gh.h>
329 #include <libguile.h>
330 typedef SCM (*FN)(...);
331 static SCM identity (SCM x) { return x; }
332 void declare () { gh_new_procedure (\"identity\", (FN) identity, 1, 0, 0); }
333 int main() { return 0; }
334 " _guile_dots_test)
335
336 if (_guile_dots_test)
337 set (DOTS_OK 1)
338 else (_guile_dots_test)
339 set (DOTS_OK)
340 endif (_guile_dots_test)
341
342 ### --------------------------------------------------------------------
343 ### Generate configure headers
344 ### --------------------------------------------------------------------
345 set (DEBUG_ASSERT 1)
346
347 set (USE_GS 1)
348 if (WIN32)
349 set (GS_EXE bin/gs.exe)
350 else (WIN32)
351 set (GS_EXE /usr/bin/gs)
352 endif (WIN32)
353 set (GS_FONTS ../share/ghostscript/fonts:/usr/share/fonts:)
354 set (GS_LIB ../share/ghostscript/9.06/lib:)
355
356 set (GUILE_NUM 1)
357 set (PDF_RENDERER 1)
358 set (SIZEOF_VOID_P 8)
359 set (STDC_HEADERS 1)
360
361 if (WIN32)
362 option (USE_STACK_TRACE "Use stack trace" OFF)
363 else (WIN32)
364 option (USE_STACK_TRACE "Use stack trace" ON)
365 endif (WIN32)
366
367 set (CONFIG_STD_SETENV "#define STD_SETENV")
368 set (tm_orig ${TEXMACS_SOURCE_DIR})
369 set (CONFIG_HOST_OS "linux-gnu") # TODO: should not be hard-coded
370 set (CONFIG_HOST_VENDOR "pc") # TODO: should not be hard-coded
371 set (CONFIG_HOST_CPU ${CMAKE_SYSTEM_PROCESSOR})
372 set (CONFIG_USER $ENV{USER})
373 string (TIMESTAMP CONFIG_DATE)
374 set (tm_devel TeXmacs-${DEVEL_VERSION})
375 set (tm_stable TeXmacs-${STABLE_VERSION})
376 set (tm_devel_release ${tm_devel}-${DEVEL_RELEASE})
377 set (tm_stable_release ${tm_stable}-${STABLE_RELEASE})
378
379 set (prefix ${CMAKE_INSTALL_PREFIX})
380 set (exec_prefix ${prefix})
381 set (datarootdir ${prefix}/share)
382 set (datadir ${datarootdir})
383 set (tmdata ${datarootdir}/TeXmacs)
384 set (tmbin ${exec_prefix}/lib/texmacs/TeXmacs)
385
386 configure_file (${TEXMACS_SOURCE_DIR}/src/System/config.h.cmake ${TEXMACS_BINARY_DIR}/src/System/config.h)
387 configure_file (${TEXMACS_SOURCE_DIR}/src/System/tm_configure.hpp.cmake ${TEXMACS_BINARY_DIR}/src/System/tm_configure.hpp)
388
389 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${TEXMACS_BINARY_DIR}/src/System/config.h")
390
391 ### --------------------------------------------------------------------
392 ### the include dirs
393 ### --------------------------------------------------------------------
394 set (TeXmacs_Include_Dirs
395 ${TEXMACS_SOURCE_DIR}/src/Data/Convert
396 ${TEXMACS_SOURCE_DIR}/src/Data/Document
397 ${TEXMACS_SOURCE_DIR}/src/Data/Drd
398 ${TEXMACS_SOURCE_DIR}/src/Data/History
399 ${TEXMACS_SOURCE_DIR}/src/Data/Observers
400 ${TEXMACS_SOURCE_DIR}/src/Data/Parser
401 ${TEXMACS_SOURCE_DIR}/src/Data/String
402 ${TEXMACS_SOURCE_DIR}/src/Data/Tree
403 ${TEXMACS_SOURCE_DIR}/src/Edit
404 ${TEXMACS_SOURCE_DIR}/src/Edit/Editor
405 ${TEXMACS_SOURCE_DIR}/src/Edit/Interface
406 ${TEXMACS_SOURCE_DIR}/src/Edit/Modify
407 ${TEXMACS_SOURCE_DIR}/src/Edit/Process
408 ${TEXMACS_SOURCE_DIR}/src/Edit/Replace
409 ${TEXMACS_SOURCE_DIR}/src/Graphics/Bitmap_fonts
410 ${TEXMACS_SOURCE_DIR}/src/Graphics/Colors
411 ${TEXMACS_SOURCE_DIR}/src/Graphics/Fonts
412 ${TEXMACS_SOURCE_DIR}/src/Graphics/Gui
413 ${TEXMACS_SOURCE_DIR}/src/Graphics/Handwriting
414 ${TEXMACS_SOURCE_DIR}/src/Graphics/Mathematics
415 ${TEXMACS_SOURCE_DIR}/src/Graphics/Pictures
416 ${TEXMACS_SOURCE_DIR}/src/Graphics/Renderer
417 ${TEXMACS_SOURCE_DIR}/src/Graphics/Spacial
418 ${TEXMACS_SOURCE_DIR}/src/Graphics/Types
419 ${TEXMACS_SOURCE_DIR}/src/Kernel/Abstractions
420 ${TEXMACS_SOURCE_DIR}/src/Kernel/Containers
421 ${TEXMACS_SOURCE_DIR}/src/Kernel/Types
422 ${TEXMACS_SOURCE_DIR}/src/Plugins
423 ${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/LibAesgm
424 ${TEXMACS_SOURCE_DIR}/src/Scheme
425 ${TEXMACS_SOURCE_DIR}/src/Scheme/Guile
426 ${TEXMACS_SOURCE_DIR}/src/Scheme/Scheme
427 ${TEXMACS_SOURCE_DIR}/src/Style/Environment
428 ${TEXMACS_SOURCE_DIR}/src/Style/Evaluate
429 ${TEXMACS_SOURCE_DIR}/src/Style/Memorizer
430 ${TEXMACS_SOURCE_DIR}/src/System
431 ${TEXMACS_SOURCE_DIR}/src/System/Boot
432 ${TEXMACS_SOURCE_DIR}/src/System/Classes
433 ${TEXMACS_SOURCE_DIR}/src/System/Files
434 ${TEXMACS_SOURCE_DIR}/src/System/Language
435 ${TEXMACS_SOURCE_DIR}/src/System/Link
436 ${TEXMACS_SOURCE_DIR}/src/System/Misc
437 ${TEXMACS_SOURCE_DIR}/src/Texmacs
438 ${TEXMACS_SOURCE_DIR}/src/Texmacs/Data
439 ${TEXMACS_SOURCE_DIR}/src/Typeset
440 ${TEXMACS_SOURCE_DIR}/src/Typeset/Bridge
441 ${TEXMACS_SOURCE_DIR}/src/Typeset/Concat
442 ${TEXMACS_SOURCE_DIR}/src/Typeset/Page
443 ${TEXMACS_SOURCE_DIR}/TeXmacs/include
444 ${TEXMACS_BINARY_DIR}/src/System/
445 )
446
447 if (WIN32)
448 set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs}
449 ${TEXMACS_SOURCE_DIR}/src/Plugins/Windows
450 ${TEXMACS_SOURCE_DIR}/src/Plugins/Windows/nowide
451 )
452 else (WIN32)
453 endif (WIN32)
454
455 set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs}
456 ${Guile_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${Cairo_INCLUDE_DIRS}
457 ${IMLIB2_INCLUDE_DIR} ${GMP_INCLUDES}
458 )
459
460 ### --------------------------------------------------------------------
461 ### the main sources
462 ### --------------------------------------------------------------------
463 file (GLOB_RECURSE TeXmacs_Base_SRCS
464 "${TEXMACS_SOURCE_DIR}/src/Data/*.cpp"
465 "${TEXMACS_SOURCE_DIR}/src/Edit/*.cpp"
466 "${TEXMACS_SOURCE_DIR}/src/Graphics/*.cpp"
467 "${TEXMACS_SOURCE_DIR}/src/Kernel/*.cpp"
468 "${TEXMACS_SOURCE_DIR}/src/Scheme/Scheme/*.cpp"
469 "${TEXMACS_SOURCE_DIR}/src/Scheme/Guile/*.cpp"
470 "${TEXMACS_SOURCE_DIR}/src/System/*.cpp"
471 "${TEXMACS_SOURCE_DIR}/src/Texmacs/Data/*.cpp"
472 "${TEXMACS_SOURCE_DIR}/src/Texmacs/Server/*.cpp"
473 "${TEXMACS_SOURCE_DIR}/src/Texmacs/Window/*.cpp"
474 "${TEXMACS_SOURCE_DIR}/src/Typeset/*.cpp"
475 )
476
477 file (GLOB_RECURSE TeXmacs_Std_Plugins_SRCS
478 "${TEXMACS_SOURCE_DIR}/src/Plugins/Axel/*.cpp"
479 "${TEXMACS_SOURCE_DIR}/src/Plugins/Bibtex/*.cpp"
480 "${TEXMACS_SOURCE_DIR}/src/Plugins/Cairo/*.cpp"
481 "${TEXMACS_SOURCE_DIR}/src/Plugins/Database/*.cpp"
482 "${TEXMACS_SOURCE_DIR}/src/Plugins/Freetype/*.cpp"
483 "${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/*.cpp"
484 "${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/*.c"
485 "${TEXMACS_SOURCE_DIR}/src/Plugins/Ghostscript/*.cpp"
486 "${TEXMACS_SOURCE_DIR}/src/Plugins/Imlib2/*.cpp"
487 "${TEXMACS_SOURCE_DIR}/src/Plugins/Ispell/*.cpp"
488 "${TEXMACS_SOURCE_DIR}/src/Plugins/Metafont/*.cpp"
489 "${TEXMACS_SOURCE_DIR}/src/Plugins/LaTeX_Preview/*.cpp"
490 "${TEXMACS_SOURCE_DIR}/src/Plugins/Mplayer/*.cpp"
491 "${TEXMACS_SOURCE_DIR}/src/Plugins/Openssl/*.cpp"
492 "${TEXMACS_SOURCE_DIR}/src/Plugins/Sqlite3/*.cpp"
493 "${TEXMACS_SOURCE_DIR}/src/Plugins/Updater/*.cpp"
494 )
495
496 file (GLOB_RECURSE TeXmacs_Style_SRCS
497 "${TEXMACS_SOURCE_DIR}/src/Style/*.cpp"
498 )
499
500 set (TeXmacs_All_SRCS ${TeXmacs_Base_SRCS} ${TeXmacs_Std_Plugins_SRCS})
501
502 ### --------------------------------------------------------------------
503 ### GUI Interfaces
504 ### --------------------------------------------------------------------
505
506 file (GLOB_RECURSE TeXmacs_Widkit_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Widkit/*.cpp")
507 file (GLOB_RECURSE TeXmacs_X11_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/X11/*.cpp")
508 file (GLOB_RECURSE TeXmacs_Qt_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/*.cpp")
509
510 set (TeXmacs_Qt_Moc_HDRS
511 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMApplication.hpp
512 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMFileDialog.hpp
513 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMGuiHelper.hpp
514 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMInteractiveInputHelper.hpp
515 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMInteractivePrompt.hpp
516 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMMenuHelper.hpp
517 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPipeLink.hpp
518 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPrintDialog.hpp
519 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPrinterSettings.hpp
520 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMScrollView.hpp
521 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMSockets.hpp
522 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMStyle.hpp
523 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMTreeModel.hpp
524 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMWidget.hpp
525 ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMWindow.hpp
526 )
527
528 set (TeXmacs_Cocoa_SRCS
529 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_dialogues.mm
530 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_gui.mm
531 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_menu.mm
532 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_renderer.mm
533 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_utilities.mm
534 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_widget.mm
535 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/mac_utilities.mm
536 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/TMButtonsController.m
537 ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/TMView.mm
538 )
539
540 set (TeXmacs_MacOS_SRCS
541 ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/HIDRemote.m
542 ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_images.mm
543 ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_spellservice.mm
544 ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_utilities.mm
545 )
546
547 ### --------------------------------------------------------------------
548 ### Determine TeXmacs_Libraries
549 ### --------------------------------------------------------------------
550
551 set (TeXmacs_Libraries
552 ${Guile_LIBRARIES}
553 ${ZLIB_LIBRARIES}
554 ${JPEG_LIBRARIES}
555 ${PNG_LIBRARIES}
556 -lpthread
557 )
558
559 if (LINKED_CAIRO)
560 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${CAIRO_LIBRARIES})
561 endif (LINKED_CAIRO)
562
563 if (LINKED_SQLITE3)
564 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${SQLITE3_LIBRARIES})
565 endif (LINKED_SQLITE3)
566
567 if (LINKED_FREETYPE)
568 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${FREETYPE_LIBRARIES})
569 endif (LINKED_FREETYPE)
570
571
572 ### --------------------------------------------------------------------
573 ### GUI selection
574 ### --------------------------------------------------------------------
575
576 set (GUI_TYPE) # nothing or WIN32, MACOSX bundles are treated independetly
577
578 if (TEXMACS_GUI MATCHES "Qt.*")
579
580 if (TEXMACS_GUI STREQUAL "Qt4")
581 find_package (Qt4 REQUIRED)
582 set (TeXmacs_Include_Dirs
583 ${TeXmacs_Include_Dirs}
584 ${QT_INCLUDE_DIR}
585 )
586 include (${QT_USE_FILE})
587 else (TEXMACS_GUI STREQUAL "Qt4")
588 # Homebrew installs Qt5 in /usr/local/opt/qt5
589 if (APPLE AND EXISTS /usr/local/opt/qt5)
590 list (APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5")
591 endif ()
592
593 if (WIN32 AND EXISTS ${QT_CMAKE_DIR})
594 set (Qt5Core_DIR "${QT_CMAKE_DIR}/Qt5Core")
595 set (Qt5Gui_DIR "${QT_CMAKE_DIR}/Qt5Gui")
596 set (Qt5EventDispatcherSupport_DIR "${QT_CMAKE_DIR}/Qt5EventDispatcherSupport")
597 set (Qt5FontDatabaseSupport_DIR "${QT_CMAKE_DIR}/Qt5FontDatabaseSupport")
598 set (Qt5Svg_DIR "${QT_CMAKE_DIR}/Qt5Svg")
599 set (Qt5Widgets_DIR "${QT_CMAKE_DIR}/Qt5Widgets")
600 set (Qt5Network_DIR "${QT_CMAKE_DIR}/Qt5Network")
601 set (Qt5ThemeSupport_DIR "${QT_CMAKE_DIR}/Qt5ThemeSupport")
602 set (Qt5AccessibilitySupport_DIR "${QT_CMAKE_DIR}/Qt5AccessibilitySupport")
603 set (Qt5WindowsUIAutomationSupport_DIR "${QT_CMAKE_DIR}/Qt5WindowsUIAutomationSupport")
604 set (Qt5PrintSupport_DIR "${QT_CMAKE_DIR}/Qt5PrintSupport")
605 endif ()
606
607 if (APPLE)
608 find_package (Qt5 COMPONENTS Core Gui Widgets PrintSupport Svg MacExtras REQUIRED)
609 else (APPLE)
610 find_package (Qt5 COMPONENTS Core Gui Widgets PrintSupport Svg REQUIRED)
611 endif ()
612
613 if (APPLE)
614 set (QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets Qt5::PrintSupport Qt5::Svg Qt5::MacExtras)
615 else (APPLE)
616 set (QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets Qt5::PrintSupport Qt5::Svg)
617 endif (APPLE)
618
619 set (TeXmacs_Include_Dirs
620 ${TeXmacs_Include_Dirs}
621 ${Qt5Core_INCLUDE_DIRS}
622 ${Qt5Gui_INCLUDE_DIRS}
623 ${Qt5Widgets_INCLUDE_DIRS}
624 ${Qt5PrintSupport_INCLUDE_DIRS}
625 ${Qt5Svg_INCLUDE_DIRS}
626 ${Qt5MacExtras_INCLUDE_DIRS}
627 )
628
629 if (Qt5_POSITION_INDEPENDENT_CODE)
630 set (CMAKE_POSITION_INDEPENDENT_CODE ON)
631 endif (Qt5_POSITION_INDEPENDENT_CODE)
632
633 if (APPLE)
634 add_definitions ("-DQ_WS_MAC")
635 endif (APPLE)
636 endif (TEXMACS_GUI STREQUAL "Qt4")
637
638 add_definitions (${QT_DEFINITIONS})
639 add_definitions ("-DQTTEXMACS")
640
641 if (CMAKE_BUILD_TYPE STREQUAL "Release")
642 add_definitions ("-DQT_NO_DEBUG")
643 endif (CMAKE_BUILD_TYPE STREQUAL "Release")
644
645 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Qt_SRCS} ${TeXmacs_Qt_Moc_HDRS})
646 set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs} ${QT_INCLUDES})
647 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${QT_LIBRARIES})
648
649 if (WIN32)
650 set (GUI_TYPE WIN32)
651 endif (WIN32)
652
653 set (QTTEXMACS 1)
654 set (CONFIG_GUI "QT")
655 set (CONFIG_QT "Qt")
656 message (STATUS "Enabling Qt port")
657 elseif (TEXMACS_GUI STREQUAL "Aqua")
658 find_library (COCOA_LIBRARY Cocoa)
659 find_path (COCOA_INCLUDE_DIR Cocoa/Cocoa.h)
660 set (TeXmacs_Include_Dirs
661 ${TeXmacs_Include_Dirs}
662 ${COCOA_INCLUDE_DIR}
663 )
664 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Cocoa_SRCS})
665 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${COCOA_LIBRARY})
666
667 mark_as_advanced(COCOA_LIBRARY)
668 mark_as_advanced(COCOA_INCLUDE_DIR)
669 else (TEXMACS_GUI STREQUAL "Qt")
670 find_package (X11)
671
672 set (TeXmacs_Include_Dirs
673 ${TeXmacs_Include_Dirs}
674 ${X11_INCLUDE_DIR}
675 )
676 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Widkit_SRCS} ${TeXmacs_X11_SRCS})
677 set (TeXmacs_Libraries ${TeXmacs_Libraries} ${X11_LIBRARIES})
678
679 add_definitions ("-DX11TEXMACS")
680 set (X11TEXMACS 1)
681
682 set (CONFIG_X11 "X11 Widkit Ghostscript")
683 set (CONFIG_GUI "X11")
684
685 message (STATUS "Enabling standard X11 interface")
686 endif (TEXMACS_GUI MATCHES "Qt.*")
687
688 if (APPLE AND TEXMACS_GUI STREQUAL "X11")
689 set (TeXmacs_MacOS_SRCS
690 ${TeXmacs_MacOS_SRCS}
691 ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_app.mm
692 )
693 endif (APPLE AND TEXMACS_GUI STREQUAL "X11")
694
695 if (APPLE AND USE_SPARKLE)
696 set (TeXmacs_MacOS_SRCS
697 ${TeXmacs_MacOS_SRCS}
698 ${TEXMACS_SOURCE_DIR}/src/Plugins/Updater/tm_sparkle.mm
699 )
700 endif (APPLE AND USE_SPARKLE)
701
702 ### --------------------------------------------------------------------
703 ### OS System selection
704 ### --------------------------------------------------------------------
705
706 if (WIN32)
707 file (GLOB_RECURSE TeXmacs_System_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Windows/*.cpp")
708 else (WIN32)
709 file (GLOB_RECURSE TeXmacs_System_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Unix/*.cpp")
710 endif (WIN32)
711
712 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_System_SRCS})
713
714 if (APPLE)
715 set (TeXmacs_Libraries
716 ${TeXmacs_Libraries}
717 "-framework ApplicationServices"
718 "-framework CoreFoundation"
719 "-framework Security"
720 "-framework Carbon"
721 "-framework AppKit"
722 "-framework Cocoa"
723 "-framework IOKit"
724 "-framework CoreGraphics"
725 "-framework CoreServices"
726 "-framework CoreText"
727 "-framework Foundation"
728 "-framework ImageIO"
729 )
730 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_MacOS_SRCS})
731
732 set (GUI_TYPE MACOSX_BUNDLE)
733 set (NO_FAST_ALLOC 1)
734 set (AQUATEXMACS 1)
735 set (COCOA_CFLAGS "")
736 set (COCOA_LDFLAGS "-framework COCOA")
737 set (CONFIG_GUI "COCOA")
738 set (CONFIG_COCOA "Cocoa")
739
740 message (STATUS "Enabling experimental Cocoa port")
741 else (APPLE)
742 endif (APPLE)
743
744 include_directories (${TeXmacs_Include_Dirs})
745
746 ### --------------------------------------------------------------------
747 ### Debugging options
748 ### --------------------------------------------------------------------
749
750
751 ### --------------------------------------------------------------------
752 ### Warning options
753 ### --------------------------------------------------------------------
754
755 ### --------------------------------------------------------------------
756 ### Optimization options
757 ### --------------------------------------------------------------------
758
759 ### --------------------------------------------------------------------
760 ### Compile sources
761 ### --------------------------------------------------------------------
762
763 add_subdirectory (src)
764 add_subdirectory (plugins)
765 add_subdirectory (misc)
766 add_subdirectory (TeXmacs)
767
768 ### --------------------------------------------------------------------
769 ### Installation
770 ### --------------------------------------------------------------------
771
772 if (APPLE)
773 install (FILES packages/macos/TeXmacs.icns DESTINATION ${CMAKE_INSTALL_PREFIX})
774 install (FILES packages/macos/TeXmacs-document.icns DESTINATION ${CMAKE_INSTALL_PREFIX})
775 install (DIRECTORY src/Plugins/Cocoa/English.lproj DESTINATION ${CMAKE_INSTALL_PREFIX})
776 install (DIRECTORY src/Plugins/Cocoa/zh_CN.lproj DESTINATION ${CMAKE_INSTALL_PREFIX})
777 endif (APPLE)
778
779 if (NOT WIN32)
780 install (FILES ${TEXMACS_BINARY_DIR}/misc/scripts/texmacs
781 ${TEXMACS_BINARY_DIR}/misc/scripts/fig2ps
782 misc/scripts/tm_gs
783 DESTINATION bin
784 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
785 GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
786 endif (NOT WIN32)
787
788 ### include/
789 install (DIRECTORY TeXmacs/include DESTINATION ${CMAKE_INSTALL_PREFIX}
790 FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
791
792 ### share/
793 if (WIN32)
794 install (DIRECTORY plugins DESTINATION ${CMAKE_INSTALL_PREFIX}
795 FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
796 PATTERN "bin" EXCLUDE
797 PATTERN "CMakeLists.txt" EXCLUDE
798 PATTERN ".gitignore" EXCLUDE)
799 else (WIN32)
800 install (DIRECTORY plugins DESTINATION share/TeXmacs
801 FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
802 PATTERN "bin" EXCLUDE
803 PATTERN "CMakeLists.txt" EXCLUDE
804 PATTERN ".gitignore" EXCLUDE)
805 endif (WIN32)
806
807 install (FILES TeXmacs/misc/mime/texmacs.desktop DESTINATION share/applications)
808 install (FILES TeXmacs/misc/images/texmacs.svg RENAME TeXmacs.svg
809 DESTINATION share/icons/hicolor/scalable/apps)
810 install (FILES TeXmacs/misc/images/text-x-texmacs.svg
811 DESTINATION share/icons/hicolor/scalable/mimetypes)
812 install (FILES TeXmacs/misc/mime/texmacs.xml DESTINATION share/mime/packages)
813 install (FILES TeXmacs/misc/pixmaps/TeXmacs.xpm DESTINATION share/pixmaps)
814 foreach (size IN ITEMS 16 22 24 32 48 64 128 256 512)
815 message (STATUS ${size})
816 install (FILES TeXmacs/misc/images/texmacs-${size}.png RENAME TeXmacs.png
817 DESTINATION share/icons/hicolor/${size}x${size}/apps/)
818 endforeach ()
819
820 ### --------------------------------------------------------------------
821 ### Testing
822 ### --------------------------------------------------------------------
823
824 option (BUILD_TESTS "Build unit tests" OFF)
825
826 if (BUILD_TESTS)
827 include (CTest)
828 find_package(Qt5Test REQUIRED)
829 enable_testing ()
830 add_subdirectory (tests)
831 # add_subdirectory (misc/benchmark)
832 endif (BUILD_TESTS)
833
834 ### ---------------------------------------------------------------------
835 ### VSCode Support
836 ### ---------------------------------------------------------------------
837 foreach (DIR ${TeXmacs_Include_Dirs})
838 set (VSCODE_INCLUDE_DIRS "${VSCODE_INCLUDE_DIRS}\"${DIR}\",\n ")
839 endforeach (DIR ${TeXmacs_Include_Dirs})
840
841 configure_file (${TEXMACS_SOURCE_DIR}/misc/vscode/c_cpp_properties.json.in
842 ${TEXMACS_SOURCE_DIR}/.vscode/c_cpp_properties.json
843 @ONLY
844 )
845
846 message (STATUS "TeXmacs_Libraries" ${TeXmacs_Libraries})