- Defined Manufacturer name - Product name now references each of the selected modules - Serial number refers to the last commit date, branch, and whether modified since the last commitsimple
${DEBUG_SRCS} | ${DEBUG_SRCS} | ||||
) | ) | ||||
#| Directories to include by default | |||||
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) | |||||
### | ### |
}; | }; | ||||
static struct usb_string_descriptor_struct string1 = { | static struct usb_string_descriptor_struct string1 = { | ||||
2 + MANUFACTURER_NAME_LEN * 2, | |||||
sizeof(STR_MANUFACTURER), | |||||
3, | 3, | ||||
MANUFACTURER_NAME | |||||
STR_MANUFACTURER | |||||
}; | }; | ||||
static struct usb_string_descriptor_struct string2 = { | static struct usb_string_descriptor_struct string2 = { | ||||
2 + PRODUCT_NAME_LEN * 2, | |||||
sizeof(STR_PRODUCT), | |||||
3, | 3, | ||||
PRODUCT_NAME | |||||
STR_PRODUCT | |||||
}; | }; | ||||
static struct usb_string_descriptor_struct string3 = { | static struct usb_string_descriptor_struct string3 = { | ||||
12, | |||||
sizeof(STR_SERIAL), | |||||
3, | 3, | ||||
{'1','2','3','4','5'} | |||||
STR_SERIAL | |||||
}; | }; | ||||
{0x2100, JOYSTICK_INTERFACE, config_descriptor+JOYSTICK_DESC_OFFSET, 9}, | {0x2100, JOYSTICK_INTERFACE, config_descriptor+JOYSTICK_DESC_OFFSET, 9}, | ||||
#endif | #endif | ||||
{0x0300, 0x0000, (const uint8_t *)&string0, 4}, | {0x0300, 0x0000, (const uint8_t *)&string0, 4}, | ||||
{0x0301, 0x0409, (const uint8_t *)&string1, 2 + MANUFACTURER_NAME_LEN * 2}, | |||||
{0x0302, 0x0409, (const uint8_t *)&string2, 2 + PRODUCT_NAME_LEN * 2}, | |||||
{0x0303, 0x0409, (const uint8_t *)&string3, 12}, | |||||
{0x0301, 0x0409, (const uint8_t *)&string1, sizeof(STR_MANUFACTURER)}, | |||||
{0x0302, 0x0409, (const uint8_t *)&string2, sizeof(STR_PRODUCT)}, | |||||
{0x0303, 0x0409, (const uint8_t *)&string3, sizeof(STR_SERIAL)}, | |||||
{0, 0, NULL, 0} | {0, 0, NULL, 0} | ||||
}; | }; | ||||
/* Copyright (C) 2011 by Jacob Alexander | |||||
/* Copyright (C) 2013 by Jacob Alexander | |||||
* | * | ||||
* Permission is hereby granted, free of charge, to any person obtaining a copy | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
* of this software and associated documentation files (the "Software"), to deal | * of this software and associated documentation files (the "Software"), to deal | ||||
#include <stdint.h> | #include <stdint.h> | ||||
// Local Includes | // Local Includes | ||||
#include <buildvars.h> // Defines USB Parameters, partially generated by CMake | |||||
#define USB_MAX_KEY_SEND 6 | #define USB_MAX_KEY_SEND 6 | ||||
// You can change these to give your code its own name. | |||||
// TODO Add to Teensy 3 | |||||
#define STR_MANUFACTURER L"MfgName" | |||||
#define STR_PRODUCT L"Keyboard" | |||||
// Mac OS-X and Linux automatically load the correct drivers. On | |||||
// Windows, even though the driver is supplied by Microsoft, an | |||||
// INF file is needed to load the driver. These numbers need to | |||||
// match the INF file. | |||||
#define VENDOR_ID 0x16C0 | |||||
#define PRODUCT_ID 0x0487 // New ID for Teensy 3 | |||||
//#define PRODUCT_ID 0x047D // Old ID for Teensy 2 | |||||
// ----- Variables ----- | // ----- Variables ----- | ||||
message( "${COMPILER_SRCS}" ) | message( "${COMPILER_SRCS}" ) | ||||
#| USB Defines | |||||
set( VENDOR_ID "0x16C0" ) | |||||
set( PRODUCT_ID "0x0487" ) | |||||
#| Compiler flag to set the C Standard level. | #| Compiler flag to set the C Standard level. | ||||
#| c89 = "ANSI" C | #| c89 = "ANSI" C | ||||
#| gnu89 = c89 plus GCC extensions | #| gnu89 = c89 plus GCC extensions | ||||
#| Tuning Options | #| Tuning Options | ||||
#| -f...: tuning, see GCC manual | #| -f...: tuning, see GCC manual | ||||
set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections" ) | |||||
#| NOTE: -fshort-wchar is specified to allow USB strings be passed conveniently | |||||
set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections -fshort-wchar" ) | |||||
#| Optimization level, can be [0, 1, 2, 3, s]. | #| Optimization level, can be [0, 1, 2, 3, s]. | ||||
#| Compiler Flags | #| Compiler Flags | ||||
add_definitions( "-mcpu=${CPU} -DF_CPU=${F_CPU} -D_${CHIP}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}" ) | |||||
add_definitions( "-mcpu=${CPU} -DF_CPU=${F_CPU} -D_${CHIP}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS}" ) | |||||
#| Linker Flags | #| Linker Flags | ||||
set( LINKER_FLAGS "-mcpu=${CPU} -Wl,-Map=${TARGET}.map,--cref -Wl,--gc-sections -mthumb -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" ) | |||||
set( LINKER_FLAGS "-mcpu=${CPU} -Wl,-Map=${TARGET}.map,--cref -Wl,--gc-sections -mthumb -Wl,--no-wchar-size-warning -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" ) | |||||
#| Hex Flags (XXX, CMake seems to have issues if you quote the arguments for the custom commands...) | #| Hex Flags (XXX, CMake seems to have issues if you quote the arguments for the custom commands...) |
) | ) | ||||
#| USB Defines | |||||
set( VENDOR_ID "0x16C0" ) | |||||
set( PRODUCT_ID "0x047D" ) | |||||
#| Compiler flag to set the C Standard level. | #| Compiler flag to set the C Standard level. | ||||
#| c89 = "ANSI" C | #| c89 = "ANSI" C | ||||
#| gnu89 = c89 plus GCC extensions | #| gnu89 = c89 plus GCC extensions | ||||
#| Tuning Options | #| Tuning Options | ||||
#| -f...: tuning, see GCC manual and avr-libc documentation | #| -f...: tuning, see GCC manual and avr-libc documentation | ||||
set( TUNING "-funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums" ) | |||||
#| NOTE: -fshort-wchar is specified to allow USB strings be passed conveniently | |||||
set( TUNING "-funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -fshort-wchar" ) | |||||
#| Optimization level, can be [0, 1, 2, 3, s]. | #| Optimization level, can be [0, 1, 2, 3, s]. | ||||
#| Compiler Flags | #| Compiler Flags | ||||
add_definitions( "-mmcu=${MCU} -DF_CPU=${F_CPU} -D_${MCU}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}" ) | |||||
add_definitions( "-mmcu=${MCU} -DF_CPU=${F_CPU} -D_${MCU}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS}" ) | |||||
#| Linker Flags | #| Linker Flags |
message( STATUS "Detected Debug Module Source Files:" ) | message( STATUS "Detected Debug Module Source Files:" ) | ||||
message( "${DEBUG_SRCS}" ) | message( "${DEBUG_SRCS}" ) | ||||
### | |||||
# Generate USB Defines | |||||
# | |||||
#| Manufacturer name | |||||
set( MANUFACTURER "Kiibohd" ) | |||||
#| Serial Number | |||||
#| Attempt to call Git to get the branch, last commit date, and whether code modified since last commit | |||||
#| Modified | |||||
#| Takes a bit of work to extract the "M " using CMake, and not using it if there are not modifications | |||||
execute_process( COMMAND git status -s -uno --porcelain | |||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} | |||||
OUTPUT_VARIABLE Git_Modified_INFO | |||||
ERROR_QUIET | |||||
OUTPUT_STRIP_TRAILING_WHITESPACE | |||||
) | |||||
string( LENGTH "${Git_Modified_INFO}" Git_Modified_LENGTH ) | |||||
if ( ${Git_Modified_LENGTH} GREATER 2 ) | |||||
string( SUBSTRING "${Git_Modified_INFO}" 1 2 Git_Modified_Flag_INFO ) | |||||
endif ( ${Git_Modified_LENGTH} GREATER 2 ) | |||||
#| Branch | |||||
execute_process( COMMAND git rev-parse --abbrev-ref HEAD | |||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} | |||||
OUTPUT_VARIABLE Git_Branch_INFO | |||||
ERROR_QUIET | |||||
OUTPUT_STRIP_TRAILING_WHITESPACE | |||||
) | |||||
#| Date | |||||
execute_process( COMMAND git show -s --format=%ci | |||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} | |||||
OUTPUT_VARIABLE Git_Date_INFO | |||||
RESULT_VARIABLE Git_RETURN | |||||
ERROR_QUIET | |||||
OUTPUT_STRIP_TRAILING_WHITESPACE | |||||
) | |||||
#| Only use Git variables if we were successful in calling the commands | |||||
if ( ${Git_RETURN} EQUAL 0 ) | |||||
set( GitLastCommitDate "${Git_Modified_Flag_INFO}${Git_Branch_INFO} - ${Git_Date_INFO}" ) | |||||
else ( ${Git_RETURN} EQUAL 0 ) | |||||
# TODO Figure out a good way of finding the current branch + commit date + modified | |||||
set( GitLastCommitDate "Pft...Windows Build" ) | |||||
endif ( ${Git_RETURN} EQUAL 0 ) | |||||
#| Uses CMake variables to include as defines | |||||
#| Primarily for USB configuration | |||||
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Lib/_buildvars.h buildvars.h ) | |||||