Thursday, January 31, 2019

Linker error: Tap dance related... maybe?

Once again I shall come to you my dear sirs and madams for rescue! Finally everything complies but now the linker is acting up...

***userspace/rumlyne.c #include "quantum.h" #include "process_keycode/process_tap_dance.h" //#include "action_layer.h" #include "rumlyne.h" #include "nqadnw_basic_layout.h" --- ***userspace/rumlyne.h#pragma once #ifndef RUMLYNE_H #define RUMLYNE_H //#include "wrappers.h" #include "keymap_german.h" #include <sendstring_german.h> #include "quantum.h" #include "action.h" ---insert many many definitions and stuff that apparently works because it is tap dance functions that seems to bother the linker--- #ifdef TAP_DANCE_ENABLE enum /*tap_key*/ { QOT = 0, CUR, TLD, AT, PAR, SDO, APT, PCM, GUI, UCS, AF4, GTN, GTW, EML, BYE, BR1, //bracket 1,2,3,4 BR2, BR3, BR4, ARH, //arrow H,J,K,L ARJ, ARK, ARL }; #endif // TAP_DANCE_ENABLE enum userspace_layers { _BASE = 0, // Programmer BUX // default _JPNS, // 2 // Japanese Kana layout based on esrilles new stickney layout // TODO FUTURE _CODE, // 3 // Code friendly layer _STD, // 4 // QWERTZ, QWERTY, AZERTY, etc. _RAISE_L, // _RAISE when accessed via left MOD // BuT based symbol layer _RAISE_L_C, // _RAISE when accessed via left MOD on _CODE layer _RAISE_R, _RAISE_R_C, _LOWER_L, _LOWER_L_C, _LOWER_R, _LOWER_R_C, _LEFT, _LEFT_C, // _LEFT when pressed on _CODE layer _RIGHT // NUM+ // _RIGHT_C }; // NQADNW specific layer MODs #define RS_L LT(_RAISE_L, KC_SPC) // access _RAISE via left MOD #define RS_L_C LT(_RAISE_L_C, KC_SPC) // access _RAISE_C via left MOD on _CODE layer #define RS_R LT(_RAISE_R, KC_DOT) // access _RAISE via right MOD #define RS_R_C LT(_RAISE_R_C, KC_DOT) // access _RAISE_C via right MOD on _CODE layer #define LW_L LT(_LOWER_L, KC_COMM) // access _LOWER via left MOD #define LW_L_C LT(_LOWER_L_C, KC_COMM) // access _LOWER_C via left MOD on _CODE layer #define LW_R LT(_LOWER_R, KC_ENT) // access _LOWER via right MOD #define LW_R_C LT(_LOWER_L_C, KC_ENT) // access _LOWER_C via right MOD on _CODE layer #define LEFT TT(_LEFT) #define RIGHT LT(_RIGHT, /*TG(_RIGHT)*/KC_NO) // TODO FUTURE //#define CODE TT(_CODE) ---imsert many many definitions and stuff that apparently works because it is tap dance functions that seems to bother the linker--- // String keycodes & dynaminc macro dependancy enum more_custom_keycodes { DYNAMIC_MACRO_RANGE = NEW_SAFE_RANGE, // necessary for dynamic macros according to QMK guide KS_00, NEW_NEW_SAFE_RANGE }; char ST_EML_UNAME1[10] = "xxxxxxxxxx"; char ST_EML_UNAME2[17] = "xxxxxxxxxxxxxxxxx"; char ST_EML_UNAME3[7] = "rumlyne"; // :) char ST_EML_DOMAIN1[9] = "xxxxxxxxx"; char ST_EML_DOMAIN2[6] = "xxxxxx"; char ST_EML_DOMAIN3[6] = "xxxxxx"; char ST_EML_DOMAIN4[6] = "xxxxxx"; char ST_DNUL[2] = "00"; char ST_SUDO[5] = "sudo "; char ST_DFNE[8] = "#define "; char ST_INCL[9] = "#include "; char ST_APIS[16] = "apt-get install "; char ST_APUD[15] = "apt-get update "; char ST_APUG[16] = "apt-get upgrade "; char ST_PMNS[10] = "pacman -S "; char ST_PSYU[12] = "pacman -Syu "; char ST_PSYY[14] = "pacman -Syyuu "; static const char ST_SGDH[31] = {"Sehr geehrte Damen und Herren, "}; static const char ST_LKUK[32] = {"Liebe Kolleginnen und Kollegen, "}; static const char ST_MFG1[20] = {"Mit freundlichen Gr["}; // siehe quantum/keymap_extras/sendstring_german char ST_MFG2[2] = "n "; char ST_HAVL[17] = "Hochachtungsvoll "; char ST_DSOM[19] = "Dear sir or madam, "; char ST_DRCS[16] = "Dear collegues, "; char ST_BTRS[14] = "Best regards, "; /* static const char * const ST_DEGR[31] = { "Sehr geehrte Damen und Herren, ", "Liebe Kolleginnen und Kollegen, ", "Mit freundlichen Grüßen " }; */ #ifdef UNICODE_ENABLE enum unicode_name { //UST_HBR, // //UST_DEG, // //UST_LIR, // UST_BIT, // ₿ Bitcoin //UST_EUR, // € UST_BPN, // £ UST_YEN, // ¥ UST_TMK, // ™ UST_RTM, // ® UST_CPR // © }; const uint16_t PROGMEM unicode_map[] = { //16 genug? //[UST_HBR] = 0x0127, //[UST_DEG] = 0x00B0, //[UST_LIR] = 0x20BA, [UST_BIT] = 0x20BF, // ₿ Bitcoin //[UST_EUR] = 0x20AC, // € [UST_BPN] = 0x00A3, // £ [UST_YEN] = 0x00A5, // ¥ [UST_TMK] = 0x2122, // ™ [UST_RTM] = 0x00B0, // ® [UST_CPR] = 0x00AE // © }; #endif // UNICODE_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { // send strings, send even more strings when tap dance is disabled switch(keycode) { case KS_00: if (record->event.pressed) { send_string(ST_DNUL); return false; } } return true; }; // Tap dance events // ' " void td_quot_dqot (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_QUOT); register_code(KC_LSFT); tap_code(KC_BSLS/*DE_HASH*/); unregister_code(KC_LSFT); } else if (state->count == 2) { clear_mods(); //tap_code(DE_DQOT); register_code(KC_LSFT); tap_code(KC_2); unregister_code(KC_LSFT); } else if (state->count == 3) { clear_mods(); //tap_code(DE_DQOT); //tap_code(DE_DQOT); register_code(KC_LSFT); tap_code(KC_2); tap_code(KC_2); unregister_code(KC_LSFT); tap_code(KC_LEFT); } else if (state->count == 4) { clear_mods(); //tap_code(DE_QUOT); //tap_code(DE_QUOT); register_code(KC_LSFT); tap_code(KC_BSLS/*DE_HASH*/); tap_code(KC_BSLS/*DE_HASH*/); unregister_code(KC_LSFT); tap_code(KC_LEFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // € $ void td_euro_dllr (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(CUR_EUR); register_code(KC_RALT); tap_code(KC_E); unregister_code(KC_RALT); } else if (state->count == 2) { clear_mods(); //tap_code(DE_DLR); register_code(KC_LSFT); tap_code(KC_4); unregister_code(KC_LSFT); } else if (state->count >= 3) { reset_tap_dance(state); } reset_tap_dance(state); } // ~ ™ void td_tild_uc_tm (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_TILD); register_code(KC_RALT); tap_code(KC_RBRC/*DE_PLUS*/); unregister_code(KC_RALT); } else if (state->count == 2) { #ifdef UNICODE_ENABLE unicode_input_start(); register_hex(UST_TMK); unicode_input_finish(); #else clear_mods(); register_code(KC_RALT); tap_code(KC_RBRC/*DE_PLUS*/); unregister_code(KC_RALT); #endif // UNICODE_ENABLE } else if (state->count >= 3) { reset_tap_dance(state); } reset_tap_dance(state); } // @ © void td_at_uc_cpr (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { //tap_code(DE_AT); register_code(KC_RALT); tap_code(KC_RBRC/*DE_PLUS*/); unregister_code(KC_RALT); } else if (state->count == 2) { #ifdef UNICODE_ENABLE unicode_input_start(); register_hex(UST_CPR); unicode_input_finish(); #else clear_mods(); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); #endif // UNICODE_ENABLE } else if (state->count >= 3) { reset_tap_dance(state); } reset_tap_dance(state); } // § ® void td_para_uc_rtm (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_PARA); register_code(KC_LSFT); tap_code(KC_3); unregister_code(KC_LSFT); } else if (state->count == 2) { #ifdef UNICODE_ENABLE unicode_input_start(); register_hex(UST_RTM); unicode_input_finish(); #else clear_mods(); register_code(KC_LSFT); tap_code(KC_3); unregister_code(KC_LSFT); #endif } else if (state->count >= 3) { reset_tap_dance(state); } reset_tap_dance(state); } // () void td_lprn_rprn (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_LPRN); register_code(KC_LSFT); tap_code(KC_8); unregister_code(KC_LSFT); } else if (state->count == 2) { clear_mods(); //tap_code(DE_RPRN); register_code(KC_LSFT); tap_code(KC_9); unregister_code(KC_LSFT); } else if (state->count == 3) { clear_mods(); //tap_code(DE_LPRN); //tap_code(DE_RPRN); register_code(KC_LSFT); tap_code(KC_8); tap_code(KC_9); unregister_code(KC_LSFT); } else if (state->count == 4) { clear_mods(); //tap_code(DE_LPRN); //tap_code(DE_RPRN); register_code(KC_LSFT); tap_code(KC_8); tap_code(KC_9); unregister_code(KC_LSFT); tap_code(KC_LEFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // [] void td_lbrc_rbrc (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_LBRC); register_code(KC_RALT); tap_code(KC_8); unregister_code(KC_RALT); } else if (state->count == 2) { clear_mods(); //tap_code(DE_RBRC); register_code(KC_RALT); tap_code(KC_9); unregister_code(KC_RALT); } else if (state->count == 3) { clear_mods(); //tap_code(DE_LBRC); //tap_code(DE_RBRC); register_code(KC_RALT); tap_code(KC_8); tap_code(KC_9); unregister_code(KC_RALT); } else if (state->count == 4) { clear_mods(); //tap_code(DE_LBRC); //tap_code(DE_RBRC); register_code(KC_RALT); tap_code(KC_8); tap_code(KC_9); unregister_code(KC_RALT); tap_code(KC_LEFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // {} void td_lcbr_rcbr (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); //tap_code(DE_LCBR); register_code(KC_RALT); tap_code(KC_7); unregister_code(KC_RALT); } else if (state->count == 2) { clear_mods(); //tap_code(DE_RCBR); register_code(KC_RALT); tap_code(KC_0); unregister_code(KC_RALT); } else if (state->count == 3) { clear_mods(); //tap_code(DE_LCBR); //tap_code(DE_RCBR); register_code(KC_RALT); tap_code(KC_7); tap_code(KC_0); unregister_code(KC_RALT); } else if (state->count == 4) { clear_mods(); //tap_code(DE_LCBR); //tap_code(DE_RCBR); register_code(KC_RALT); tap_code(KC_7); tap_code(KC_0); unregister_code(KC_RALT); tap_code(KC_LEFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // <> void td_less_more (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); tap_code(KC_NUBS/*DE_LESS*/); } else if (state->count == 2) { clear_mods(); //tap_code(DE_MORE); register_code(KC_LSFT); tap_code(KC_NUBS/*DE_LESS*/); unregister_code(KC_LSFT); } else if (state->count == 3) { clear_mods(); tap_code(KC_NUBS/*DE_LESS*/); //tap_code(DE_MORE); register_code(KC_LSFT); tap_code(KC_NUBS/*DE_LESS*/); unregister_code(KC_LSFT); } else if (state->count == 4) { clear_mods(); tap_code(KC_NUBS/*DE_LESS*/); //tap_code(DE_MORE); register_code(KC_LSFT); tap_code(KC_NUBS/*DE_LESS*/); unregister_code(KC_LSFT); tap_code(KC_LEFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // sudo // #define // #include void td_sudo_dfne_incl (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { send_string(ST_SUDO); } else if (state->count == 2) { send_string(ST_DFNE); } else if (state->count == 3) { send_string(ST_INCL); } else if (state->count >= 4) { reset_tap_dance (state); } reset_tap_dance(state); } // apt-get install // apt-get update // apt-get upgrade void td_apt_get (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { send_string(ST_APIS); } else if (state->count == 2) { send_string(ST_APUD); } else if (state->count == 3) { send_string(ST_APUG); } else if (state->count >= 4) { reset_tap_dance(state); } reset_tap_dance(state); } // pacman -S // pacman -Syu // pacman -Syyuu void td_pacman (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { send_string(ST_PMNS); } else if (state->count == 2) { send_string(ST_PSYU); } else if (state->count == 3) { send_string(ST_PSYY); } else if (state->count >= 4) { reset_tap_dance(state); } reset_tap_dance(state); } void td_greet_nice (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); tap_code(KC_F3); } else if (state->count == 2) { clear_mods(); send_string(ST_SGDH); register_code(KC_LSFT); tap_code(KC_ENT); tap_code(KC_ENT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count == 3) { clear_mods(); send_string(ST_DSOM); register_code(KC_LSFT); tap_code(KC_ENT); tap_code(KC_ENT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count >= 4) { reset_tap_dance(state); } reset_tap_dance(state); } void td_greet_work (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); tap_code(KC_F2); } else if (state->count == 2) { clear_mods(); send_string(ST_LKUK); register_code(KC_LSFT); tap_code(KC_ENT); tap_code(KC_ENT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count == 3) { clear_mods(); send_string(ST_DRCS); register_code(KC_LSFT); tap_code(KC_ENT); tap_code(KC_ENT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count >= 4) { reset_tap_dance (state); } reset_tap_dance(state); } void td_email (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); tap_code(KC_F11); } else if (state->count == 2) { clear_mods(); send_string(ST_EML_UNAME1); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); send_string(ST_EML_DOMAIN2); } else if (state->count == 3) { clear_mods(); send_string(ST_EML_UNAME2); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); send_string(ST_EML_DOMAIN3); } else if (state->count == 4) { clear_mods(); send_string(ST_EML_UNAME3); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); send_string(ST_EML_DOMAIN2); } else if (state->count == 5) { clear_mods(); send_string(ST_EML_UNAME2); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); send_string(ST_EML_DOMAIN1); } else if (state->count == 6) { clear_mods(); send_string(ST_EML_UNAME2); register_code(KC_RALT); tap_code(KC_Q); unregister_code(KC_RALT); send_string(ST_EML_DOMAIN4); } else if (state->count >= 7) { reset_tap_dance(state); } reset_tap_dance(state); } void td_bye (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { clear_mods(); tap_code(KC_F10); } else if (state->count == 2) { clear_mods(); send_string(ST_MFG1); tap_code(KC_MINS/*DE_SS*/); send_string(ST_MFG2); register_code(KC_LSFT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count == 3) { send_string(ST_BTRS); register_code(KC_LSFT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count == 4) { send_string(ST_HAVL); register_code(KC_LSFT); tap_code(KC_ENT); unregister_code(KC_LSFT); } else if (state->count >= 5) { reset_tap_dance(state); } reset_tap_dance(state); } // GUI lock // switch default layer void td_glck_layer_switch (qk_tap_dance_state_t *state, void *user_data) { switch(state->count){ case 1: clear_mods(); //tap_code(LGUI(KC_L)); register_code(KC_LGUI); tap_code(KC_L); unregister_code(KC_LGUI); break; /* case 2: if (default_layer == _BASE) // todo switch_default_layer(_CODE); // todo else switch_default_layer(_BASE); // todo break; case 3: if (default_layer != _JPNS) // todo switch_default_layer(_JPNS); // todo else switch_default_layer(_BASE); // todo break; case 4: if (default_layer != _STD) // todo switch_default_layer(_STD); // todo else switch_default_layer(_BASE); // todo break; */ default: break; } reset_tap_dance(state); } void td_uni_switch (qk_tap_dance_state_t *state, void *user_data) { switch(state->count){ case 1: clear_mods(); tap_code(KC_F9); break; //#ifdef UNICODE_ENABLE case 2: set_unicode_input_mode(UC_LNX); break; case 3: set_unicode_input_mode(UC_WIN); break; case 4: set_unicode_input_mode(UC_WINC); break; //#endif // UNICODE_ENABLE default: break; } reset_tap_dance(state); } qk_tap_dance_action_t tap_dance_actions[] = { [QOT] = ACTION_TAP_DANCE_FN(td_quot_dqot), [CUR] = ACTION_TAP_DANCE_FN(td_euro_dllr), [TLD] = ACTION_TAP_DANCE_FN(td_tild_uc_tm), [AT] = ACTION_TAP_DANCE_FN(td_at_uc_cpr), [PAR] = ACTION_TAP_DANCE_FN(td_para_uc_rtm), [BR1] = ACTION_TAP_DANCE_FN(td_lprn_rprn), [BR2] = ACTION_TAP_DANCE_FN(td_lbrc_rbrc), [BR3] = ACTION_TAP_DANCE_FN(td_lcbr_rcbr), [BR4] = ACTION_TAP_DANCE_FN(td_less_more), [UCS] = ACTION_TAP_DANCE_FN(td_uni_switch), [AF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4, LALT(KC_F4)), // thx u/grizzly_teddy [GUI] = ACTION_TAP_DANCE_FN(td_glck_layer_switch), [SDO] = ACTION_TAP_DANCE_FN(td_sudo_dfne_incl), [APT] = ACTION_TAP_DANCE_FN(td_apt_get), [PCM] = ACTION_TAP_DANCE_FN(td_pacman), [GTN] = ACTION_TAP_DANCE_FN(td_greet_nice), [GTW] = ACTION_TAP_DANCE_FN(td_greet_work), [EML] = ACTION_TAP_DANCE_FN(td_email), [BYE] = ACTION_TAP_DANCE_FN(td_bye) }; #endif // rumlyne.h 

With make idobo:rumlyne it successfully compiles everything until shit hits the fan when it the linker engages:

Compiling: users/rumlyne/rumlyne.c [OK] Compiling: keyboards/idobo/keymaps/rumlyne/keymap.c [OK] Linking: .build/idobo_rumlyne.elf [ERRORS] | | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_quot_dqot' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_euro_dllr' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_lprn_rprn' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_lbrc_rbrc' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_lcbr_rcbr' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_less_more' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_sudo_dfne_incl' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_SUDO' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_DFNE' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_INCL' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_apt_get' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_APIS' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_APUD' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_APUG' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_pacman' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_PMNS' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_PSYU' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_PSYY' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_greet_nice' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_DSOM' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_greet_work' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_DRCS' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_email' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_UNAME1' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_DOMAIN2' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_UNAME2' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_DOMAIN3' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_UNAME3' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_DOMAIN1' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_EML_DOMAIN4' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_bye' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_MFG2' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_BTRS' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_HAVL' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_glck_layer_switch' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_tild_uc_tm' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_at_uc_cpr' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_para_uc_rtm' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `td_uni_switch' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `process_record_user' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ST_DNUL' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `tap_dance_actions' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `unicode_map' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ascii_to_keycode_lut' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | .build/obj_idobo_rumlyne/keyboards/idobo/keymaps/rumlyne/keymap.o (symbol from plugin): In function `td_quot_dqot': | (.text+0x0): multiple definition of `ascii_to_shift_lut' | .build/obj_idobo_rumlyne/rumlyne.o (symbol from plugin):(.text+0x0): first defined here | collect2.exe: error: ld returned 1 exit status | make[1]: *** [tmk_core/rules.mk:299: .build/idobo_rumlyne.elf] Errors 1 Make finished with errors make: *** [Makefile:544: idobo:rumlyne] Errors 1 

I have no idea what this is about and a quick google search didn't reveal much. Let me know if you need to see the other headers/full config/.build folder.

Edit: compiling in a newly installed instance of msys on win7.



No comments:

Post a Comment