CMake generated strings that configure the USB info section
- 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 commit
This commit is contained in:
parent
473e3359f4
commit
b7afaa100f
@ -74,6 +74,9 @@ set( SRCS
|
|||||||
${DEBUG_SRCS}
|
${DEBUG_SRCS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#| Directories to include by default
|
||||||
|
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
@ -408,19 +408,19 @@ static struct usb_string_descriptor_struct string0 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -447,9 +447,9 @@ const usb_descriptor_list_t usb_descriptor_list[] = {
|
|||||||
{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},
|
{0x0301, 0x0409, (const uint8_t *)&string1, sizeof(STR_MANUFACTURER)},
|
||||||
{0x0302, 0x0409, (const uint8_t *)&string2, 2 + PRODUCT_NAME_LEN * 2},
|
{0x0302, 0x0409, (const uint8_t *)&string2, sizeof(STR_PRODUCT)},
|
||||||
{0x0303, 0x0409, (const uint8_t *)&string3, 12},
|
{0x0303, 0x0409, (const uint8_t *)&string3, sizeof(STR_SERIAL)},
|
||||||
{0, 0, NULL, 0}
|
{0, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* 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
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
// Local Includes
|
// Local Includes
|
||||||
|
#include <buildvars.h> // Defines USB Parameters, partially generated by CMake
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -37,21 +38,6 @@
|
|||||||
#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 -----
|
||||||
|
|
||||||
|
12
arm.cmake
12
arm.cmake
@ -62,6 +62,11 @@ message( STATUS "Compiler Source Files:" )
|
|||||||
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
|
||||||
@ -77,7 +82,8 @@ set( WARN "-Wall -g" )
|
|||||||
|
|
||||||
#| 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].
|
||||||
@ -105,11 +111,11 @@ set( GENDEPFLAGS "-MMD" )
|
|||||||
|
|
||||||
|
|
||||||
#| 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...)
|
||||||
|
10
avr.cmake
10
avr.cmake
@ -51,6 +51,11 @@ set( COMPILER_SRCS
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#| 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
|
||||||
@ -66,7 +71,8 @@ set( WARN "-Wall -Wstrict-prototypes" )
|
|||||||
|
|
||||||
#| 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].
|
||||||
@ -94,7 +100,7 @@ set( GENDEPFLAGS "-MMD -MP" )
|
|||||||
|
|
||||||
|
|
||||||
#| 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
|
||||||
|
57
setup.cmake
57
setup.cmake
@ -142,3 +142,60 @@ message( "${USB_SRCS}" )
|
|||||||
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 )
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user