summaryrefslogtreecommitdiffstats
path: root/cmake/erlang/ErlangTarget.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/erlang/ErlangTarget.cmake')
-rw-r--r--cmake/erlang/ErlangTarget.cmake40
1 files changed, 25 insertions, 15 deletions
diff --git a/cmake/erlang/ErlangTarget.cmake b/cmake/erlang/ErlangTarget.cmake
index cfcc431..3a21800 100644
--- a/cmake/erlang/ErlangTarget.cmake
+++ b/cmake/erlang/ErlangTarget.cmake
@@ -1,25 +1,35 @@
macro(erl_target name)
- set(in_files "")
+ parse_arguments(ARGS "HEADERS;OPTIONS" "" ${ARGN})
+
+ set(headers "")
set(out_files "")
- foreach(src ${ARGN})
- list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
+ foreach(header ${ARGS_HEADERS})
+ list(APPEND headers "${CMAKE_CURRENT_SOURCE_DIR}/${header}")
+ endforeach(header ${ARGS_HEADERS})
+
+ foreach(src ${ARGS_DEFAULT_ARGS})
+ set(in_file "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
string(REPLACE ".erl" ".beam" src ${src})
set(out_file "${CMAKE_CURRENT_BINARY_DIR}/${src}")
+
+ add_custom_command(
+ OUTPUT
+ ${out_file}
+ COMMAND
+ ${ERLC_EXECUTABLE}
+ ARGS
+ "-o" ${CMAKE_CURRENT_BINARY_DIR}
+ ${ARGS_OPTIONS}
+ ${in_file}
+ DEPENDS
+ ${in_file}
+ ${headers}
+ )
+
list(APPEND out_files "${CMAKE_CURRENT_BINARY_DIR}/${src}")
- endforeach(src ${ARGN})
+ endforeach(src ${ARGS_DEFAULT_ARGS})
- 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}
)