summaryrefslogtreecommitdiff
path: root/emu/cmake/find_gengetopt.cmake
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-11-25 20:35:13 +0100
committerAndreas Baumann <mail@andreasbaumann.cc>2020-11-25 20:35:13 +0100
commit394c9fbb6cc243e46b32aa9e7221b0e6cadd4c13 (patch)
tree2a6cf365b703be3cdb78045890f84e2a3aa5e74c /emu/cmake/find_gengetopt.cmake
parent6c3401b8a2ce7a2dfe21a253f840f286088b1921 (diff)
download6502-394c9fbb6cc243e46b32aa9e7221b0e6cadd4c13.tar.gz
6502-394c9fbb6cc243e46b32aa9e7221b0e6cadd4c13.tar.bz2
some work on emulator, also added gengetopt and cmake support for it
Diffstat (limited to 'emu/cmake/find_gengetopt.cmake')
-rw-r--r--emu/cmake/find_gengetopt.cmake33
1 files changed, 33 insertions, 0 deletions
diff --git a/emu/cmake/find_gengetopt.cmake b/emu/cmake/find_gengetopt.cmake
new file mode 100644
index 0000000..3caea3e
--- /dev/null
+++ b/emu/cmake/find_gengetopt.cmake
@@ -0,0 +1,33 @@
+MACRO(FIND_GENGETOPT)
+ IF(NOT GENGETOPT_EXECUTABLE)
+ FIND_PROGRAM(GENGETOPT_EXECUTABLE gengetopt)
+ IF (NOT GENGETOPT_EXECUTABLE)
+ MESSAGE(FATAL_ERROR "gengetopt not found - aborting")
+ ENDIF (NOT GENGETOPT_EXECUTABLE)
+ ENDIF(NOT GENGETOPT_EXECUTABLE)
+ENDMACRO(FIND_GENGETOPT)
+
+MACRO(ADD_GENGETOPT_FILES _sources )
+ FIND_GENGETOPT()
+
+ FOREACH (_current_FILE ${ARGN})
+ GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
+ GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
+
+ SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c)
+ SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${_out} ${_header}
+ COMMAND ${GENGETOPT_EXECUTABLE}
+ ARGS
+ -F ${_basename}
+ --unamed-opts
+ --input=${_in}
+ DEPENDS ${_in}
+ )
+
+ SET(${_sources} ${${_sources}} ${_out} )
+ SET(${_sources} ${${_sources}} ${_header} )
+ ENDFOREACH (_current_FILE)
+ENDMACRO(ADD_GENGETOPT_FILES)