summaryrefslogtreecommitdiffstats
path: root/cmake/erlang
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/erlang')
-rw-r--r--cmake/erlang/ErlangTarget.cmake26
-rw-r--r--cmake/erlang/FindErlang.cmake6
2 files changed, 32 insertions, 0 deletions
diff --git a/cmake/erlang/ErlangTarget.cmake b/cmake/erlang/ErlangTarget.cmake
new file mode 100644
index 0000000..cfcc431
--- /dev/null
+++ b/cmake/erlang/ErlangTarget.cmake
@@ -0,0 +1,26 @@
+macro(erl_target name)
+ set(in_files "")
+ set(out_files "")
+
+ foreach(src ${ARGN})
+ list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
+ string(REPLACE ".erl" ".beam" src ${src})
+ set(out_file "${CMAKE_CURRENT_BINARY_DIR}/${src}")
+ list(APPEND out_files "${CMAKE_CURRENT_BINARY_DIR}/${src}")
+ endforeach(src ${ARGN})
+
+ add_custom_command(
+ OUTPUT
+ ${out_files}
+ COMMAND
+ ${ERLC_EXECUTABLE}
+ ARGS
+ "-o" ${CMAKE_CURRENT_BINARY_DIR}
+ ${in_files}
+ DEPENDS
+ ${in_files}
+ )
+ add_custom_target(
+ ${name} ALL DEPENDS ${out_files}
+ )
+endmacro(erl_target)
diff --git a/cmake/erlang/FindErlang.cmake b/cmake/erlang/FindErlang.cmake
new file mode 100644
index 0000000..e7cb60f
--- /dev/null
+++ b/cmake/erlang/FindErlang.cmake
@@ -0,0 +1,6 @@
+find_program(ERLC_EXECUTABLE NAMES erlc)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Erlang DEFAULT_MSG ERLC_EXECUTABLE)
+mark_as_advanced(ERLC_EXECUTABLE)
+