summaryrefslogtreecommitdiffstats
path: root/kalzium/src/solver
diff options
context:
space:
mode:
Diffstat (limited to 'kalzium/src/solver')
-rw-r--r--kalzium/src/solver/CMakeLists.txt118
1 files changed, 118 insertions, 0 deletions
diff --git a/kalzium/src/solver/CMakeLists.txt b/kalzium/src/solver/CMakeLists.txt
new file mode 100644
index 00000000..aef745d4
--- /dev/null
+++ b/kalzium/src/solver/CMakeLists.txt
@@ -0,0 +1,118 @@
+##### macro to build ocaml sources
+
+macro( tde_add_ocaml_source _target _ml )
+
+ get_filename_component( basename "${_ml}" NAME_WE )
+
+ if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${basename}.mli )
+ add_custom_command(
+ OUTPUT
+ ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmi
+
+ COMMENT "Compile ${basename}.mli"
+
+ COMMAND ${OCAMLC_EXECUTABLE}
+ -o ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmi
+ -I ${FACILE_INCLUDE_DIR}
+ -c ${CMAKE_CURRENT_SOURCE_DIR}/${basename}.mli
+
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${basename}.ml
+ ${ARGN}
+
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+
+ set( _build_cmi ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmi )
+ else( )
+ set( _build_cmi "" )
+ endif( )
+
+ add_custom_command(
+ OUTPUT
+ ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmx
+
+ COMMENT "Compile ${basename}.ml"
+
+ COMMAND ${OCAMLOPT_EXECUTABLE}
+ -o ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmx
+ -I ${FACILE_INCLUDE_DIR}
+ -c ${CMAKE_CURRENT_SOURCE_DIR}/${basename}.ml
+
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${basename}.ml
+ ${_build_cmi}
+ ${ARGN}
+
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+
+ list( APPEND ${_target}-ocaml
+ ${CMAKE_CURRENT_BINARY_DIR}/${basename}.cmx
+ )
+endmacro( )
+
+
+# build kalzium ocaml solver
+
+tde_add_ocaml_source( kalzium_solver chemset.ml )
+
+tde_add_ocaml_source( kalzium_solver datastruct.ml
+ ${CMAKE_CURRENT_BINARY_DIR}/chemset.cmi
+)
+
+tde_add_ocaml_source( kalzium_solver chem.ml
+ ${CMAKE_CURRENT_BINARY_DIR}/chemset.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/datastruct.cmi
+)
+
+tde_add_ocaml_source( kalzium_solver parser.ml
+ ${CMAKE_CURRENT_BINARY_DIR}/chemset.cmi
+)
+
+tde_add_ocaml_source( kalzium_solver lexer.ml
+ ${CMAKE_CURRENT_BINARY_DIR}/chemset.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/parser.cmi
+)
+
+tde_add_ocaml_source( kalzium_solver calc.ml
+ ${CMAKE_CURRENT_BINARY_DIR}/chem.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/chemset.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/datastruct.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/parser.cmi
+ ${CMAKE_CURRENT_BINARY_DIR}/lexer.cmx
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/modwrap.o
+
+ COMMAND ${OCAMLOPT_EXECUTABLE}
+ -I ${FACILE_INCLUDE_DIR}
+ -c ${CMAKE_CURRENT_SOURCE_DIR}/modwrap.c
+
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/modwrap.c
+ ${CMAKE_CURRENT_BINARY_DIR}/solver.o
+
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/solver.o
+
+ COMMAND ${OCAMLOPT_EXECUTABLE} -output-obj
+ -o ${CMAKE_CURRENT_BINARY_DIR}/solver.o
+ ${FACILE_INCLUDE_DIR}/facile.cmxa
+ ${kalzium_solver-ocaml}
+
+ DEPENDS
+ ${kalzium_solver-ocaml}
+
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+add_custom_target( kalzium_solver
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/modwrap.o
+ ${CMAKE_CURRENT_BINARY_DIR}/solver.o
+)