mirror of
https://github.com/osiweb/unified_retro_keyboard.git
synced 2024-12-22 06:29:17 +00:00
562b859540
- Added the apple 2 CAPS map - auto-generate a function to check validity of a keymap index - Added buffered message printing. This is different from keycode buffering, since an extra delay is added for each message character to allow polling hosts to keep up. Keycodes are generated at human speeds and need no further slowdown. - Added a message character delay to the arch-* modules - enlarged the buffer pool, and created a buffer for messages - bumped version number
135 lines
4.0 KiB
CMake
135 lines
4.0 KiB
CMake
message("C compiler: ${CMAKE_C_COMPILER}")
|
|
|
|
function(create_keymap_setups keymaps keymap_table)
|
|
list(TRANSFORM keymaps REPLACE "<\(.+\):\(.+\)>" "\n case \\2: setup_\\1_keymap();break" OUTPUT_VARIABLE temp_list)
|
|
# we can keep the ';' cmake list separators as the C statement separators.
|
|
# However, we need to append an extra ';' at the end.
|
|
string(APPEND temp_list ";")
|
|
set(${keymap_table} "${temp_list}" PARENT_SCOPE)
|
|
endfunction(create_keymap_setups)
|
|
|
|
function(create_keymap_valid keymaps keymap_valid)
|
|
list(TRANSFORM keymaps REPLACE "<\(.+\):\(.+\)>" "\n case \\2:" OUTPUT_VARIABLE temp_list)
|
|
# we can keep the ';' cmake list separators as the C statement separators.
|
|
# However, we need to append an extra ';' at the end.
|
|
string(APPEND temp_list ";")
|
|
set(${keymap_valid} "${temp_list}" PARENT_SCOPE)
|
|
endfunction(create_keymap_setups)
|
|
|
|
function(create_keymap_declarations keymaps keymap_decl)
|
|
list(TRANSFORM keymaps REPLACE "<\(.+\):\(.+\)>" "\n void setup_\\1_keymap(void)" OUTPUT_VARIABLE temp_list)
|
|
# we can keep the ';' cmake list separators as the C statement separators.
|
|
# However, we need to append an extra ';' at the end.
|
|
string(APPEND temp_list ";")
|
|
set(${keymap_decl} "${temp_list}" PARENT_SCOPE)
|
|
endfunction(create_keymap_declarations)
|
|
|
|
function(create_keymap_report keymaps keymap_report)
|
|
list(TRANSFORM keymaps REPLACE "<\(.+\):\(.+\)>" "\nkeymap [\\2]: \\1" OUTPUT_VARIABLE temp_list)
|
|
string(REPLACE ";" "" temp_list2 "${temp_list}")
|
|
set(${keymap_report} "${temp_list2}" PARENT_SCOPE)
|
|
endfunction(create_keymap_report)
|
|
|
|
include(../keymap_list.cmake)
|
|
|
|
create_keymap_setups("${keymap_list}" keymap_table)
|
|
create_keymap_valid("${keymap_list}" keymap_valid)
|
|
create_keymap_report("${keymap_list}" keymap_report)
|
|
create_keymap_declarations("${keymap_list}" keymap_declarations)
|
|
|
|
# get list length and decrement by one to account for trailing semicolon
|
|
list (LENGTH keymap_list num_keymaps)
|
|
|
|
message("**********************")
|
|
message("Keymap table: ${keymap_report}")
|
|
message("**********************\n\n")
|
|
|
|
set (ASDF_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
configure_file(${ASDF_SRC_DIR}/Arch/asdf_arch_${ARCH}.h ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.h COPYONLY)
|
|
configure_file(${ASDF_SRC_DIR}/Arch/asdf_arch_${ARCH}.c ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.c COPYONLY)
|
|
configure_file(${ASDF_SRC_DIR}/asdf_keymap_setup.c.in ${CMAKE_CURRENT_BINARY_DIR}/asdf_keymap_setup.c)
|
|
configure_file(${ASDF_SRC_DIR}/asdf_keymap_setup.h.in ${CMAKE_CURRENT_BINARY_DIR}/asdf_keymap_setup.h)
|
|
|
|
|
|
|
|
list(APPEND CFLAGS
|
|
-std=c99
|
|
# -Wa,-adhln
|
|
-Wall
|
|
-funsigned-char
|
|
-funsigned-bitfields
|
|
-ffunction-sections
|
|
-fdata-sections
|
|
-fpack-struct
|
|
-fshort-enums
|
|
-O2
|
|
-Wall
|
|
-Wextra
|
|
-Wpointer-arith
|
|
-Wcast-align
|
|
-Wwrite-strings
|
|
-Wswitch-default
|
|
-Wunreachable-code
|
|
-Winit-self
|
|
-Wmissing-field-initializers
|
|
-Wno-unknown-pragmas
|
|
-Wstrict-prototypes
|
|
-Wundef
|
|
-Wold-style-definition
|
|
)
|
|
|
|
list (APPEND SOURCES
|
|
asdf.c
|
|
${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.c
|
|
${CMAKE_CURRENT_BINARY_DIR}/asdf_keymap_setup.c
|
|
asdf_buffer.c
|
|
asdf_hook.c
|
|
asdf_keymap_setup.c
|
|
asdf_keymaps.c
|
|
asdf_modifiers.c
|
|
asdf_physical.c
|
|
asdf_repeat.c
|
|
asdf_virtual.c
|
|
asdf_print.c
|
|
Keymaps/asdf_keymap_classic.c
|
|
Keymaps/asdf_keymap_classic_caps.c
|
|
Keymaps/asdf_keymap_classic_add_map.c
|
|
Keymaps/asdf_keymap_apple2.c
|
|
Keymaps/asdf_keymap_apple2_caps.c
|
|
Keymaps/asdf_keymap_apple2_add_map.c
|
|
Keymaps/asdf_keymap_sol.c
|
|
main.c
|
|
)
|
|
|
|
# create a library for the keymap modules
|
|
#add_subdirectory(Keymaps)
|
|
|
|
# add the executable
|
|
if (COMMAND custom_add_executable)
|
|
custom_add_executable(${ASDF_TARGET_NAME}
|
|
${SOURCES}
|
|
)
|
|
else()
|
|
add_executable(${ASDF_TARGET_NAME}
|
|
${SOURCES}
|
|
)
|
|
endif()
|
|
|
|
target_include_directories(${ASDF_EXECUTABLE_TARGET_NAME}
|
|
PRIVATE
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Keymaps
|
|
|
|
)
|
|
|
|
target_compile_options(${ASDF_EXECUTABLE_TARGET_NAME}
|
|
PRIVATE
|
|
${CFLAGS}
|
|
)
|
|
|
|
#target_link_libraries(${ASDF_EXECUTABLE_TARGET_NAME}
|
|
# keymaps
|
|
# )
|