]> www.ginac.de Git - ginac.git/blobdiff - ginsh/CMakeLists.txt
[build] GiNaC can be built with CMake now.
[ginac.git] / ginsh / CMakeLists.txt
diff --git a/ginsh/CMakeLists.txt b/ginsh/CMakeLists.txt
new file mode 100644 (file)
index 0000000..dda2e00
--- /dev/null
@@ -0,0 +1,66 @@
+include_directories(
+       ${CMAKE_CURRENT_SOURCE_DIR}/../ginac
+       ${CMAKE_CURRENT_BINARY_DIR}/../ginac
+       ${CMAKE_CURRENT_SOURCE_DIR}
+       ${CMAKE_CURRENT_BINARY_DIR})
+add_definitions(-DIN_GINAC)
+
+bison_target(ginsh_parser
+             ginsh_parser.yy
+            ${CMAKE_CURRENT_BINARY_DIR}/ginsh_parser.cpp)
+flex_target(ginsh_lexer
+            ginsh_lexer.ll
+           ${CMAKE_CURRENT_BINARY_DIR}/ginsh_lexer.cpp)
+add_flex_bison_dependency(ginsh_lexer ginsh_parser)
+
+set(ginsh_SOURCES
+    ginsh_parser.cpp
+    ginsh_lexer.cpp
+)
+
+set(ginsh_HEADERS
+    ginsh_parser.h
+    ginsh.h
+    ginsh_fcn_help.h
+    ginsh_op_help.h
+)
+
+set(ginsh_DISTRIB
+    ${ginsh_SOURCES}
+    ${ginsh_HEADERS}
+    ginsh_parser.yy
+    ginsh_lexer.ll
+    ginsh.1.in
+    ginsh_fcn_help.py
+    ginsh_op_help.py
+)
+if (READLINE_FOUND)
+       include_directories(${READLINE_INCLUDE_DIRS})
+endif()
+
+add_custom_command(
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ginsh_fcn_help.h
+       COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/ginsh_fcn_help.py -o ginsh_fcn_help.h ${CMAKE_CURRENT_SOURCE_DIR}/ginsh.1.in
+       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ginsh.1.in ${CMAKE_CURRENT_SOURCE_DIR}/ginsh_fcn_help.py
+       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+add_custom_command(
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ginsh_op_help.h
+       COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/ginsh_op_help.py -o ginsh_op_help.h ${CMAKE_CURRENT_SOURCE_DIR}/ginsh.1.in
+       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ginsh.1.in ${CMAKE_CURRENT_SOURCE_DIR}/ginsh_op_help.py
+       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+add_custom_command(
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ginsh_parser.h
+       COMMAND ${CMAKE_COMMAND} -E copy ginsh_parser.hpp ginsh_parser.h
+       DEPENDS ${BISON_ginsh_parser_OUTPUTS}
+       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+set(ginsh_extra_libs)
+if (READLINE_FOUND)
+       set(ginsh_extra_libs ${READLINE_LIBRARIES})
+endif()
+
+add_executable(ginsh ${ginsh_SOURCES} ${ginsh_HEADERS})
+target_link_libraries(ginsh ginac ${ginsh_extra_libs})
+install(TARGETS ginsh RUNTIME DESTINATION "${BIN_INSTALL_DIR}")