@@ -23,15 +23,30 @@ endif ()
2323#
2424
2525#| Create the .ELF file
26- set ( TARGET_ELF ${TARGET} .elf )
27- add_executable ( ${TARGET_ELF} ${SRCS} generatedKeymap.h )
26+ if ( NOT HOST )
27+ set ( TARGET_OUT ${TARGET} .elf )
2828
29+ # .ELF Binary
30+ add_executable ( ${TARGET} ${SRCS} generatedKeymap.h )
2931
30- #| .ELF Properties
31- set_target_properties ( ${TARGET_ELF} PROPERTIES
32- LINK_FLAGS ${LINKER_FLAGS}
33- SUFFIX "" # XXX Force Windows to keep the .exe off
34- )
32+ # .ELF Properties
33+ set_target_properties ( ${TARGET} PROPERTIES
34+ LINK_FLAGS ${LINKER_FLAGS}
35+ SUFFIX ".elf"
36+ )
37+
38+ #| Create host library
39+ else ()
40+ set ( TARGET_OUT ${CMAKE_SHARED_LIBRARY_PREFIX }${TARGET}${CMAKE_SHARED_LIBRARY_SUFFIX } )
41+
42+ # Shared Library
43+ add_library ( ${TARGET} SHARED ${SRCS} generatedKeymap.h )
44+
45+ # Shared Library Properties
46+ set_target_properties ( ${TARGET} PROPERTIES
47+ LINK_FLAGS ${LINKER_FLAGS}
48+ )
49+ endif ()
3550
3651#| llvm-clang does not have an objcopy equivalent
3752if ( "${COMPILER} " MATCHES "clang" )
@@ -53,15 +68,15 @@ if ( DEFINED DFU )
5368
5469 set ( TARGET_BIN ${TARGET} .dfu.bin )
5570 if ( DFU_SUFFIX_FOUND )
56- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
57- COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF } ${TARGET_BIN}
71+ add_custom_command ( TARGET ${TARGET } POST_BUILD
72+ COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_OUT } ${TARGET_BIN}
5873 COMMAND ${DFU_SUFFIX_EXECUTABLE} --add ${TARGET_BIN} --vid ${BOOT_VENDOR_ID} --pid ${BOOT_PRODUCT_ID} 1> /dev/null
5974 COMMENT "Create and sign dfu bin file: ${TARGET_BIN} "
6075 )
6176 else ()
6277 message ( WARNING "DFU Binary has not been signed, requires dfu-suffix..." )
63- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
64- COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF } ${TARGET_BIN}
78+ add_custom_command ( TARGET ${TARGET } POST_BUILD
79+ COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_OUT } ${TARGET_BIN}
6580 COMMENT "Creating dfu binary file: ${TARGET_BIN} "
6681 )
6782 endif ()
@@ -71,31 +86,31 @@ endif ()
7186#| Convert the .ELF into a .HEX to load onto the Teensy
7287if ( DEFINED TEENSY )
7388 set ( TARGET_HEX ${TARGET} .teensy.hex )
74- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
75- COMMAND ${OBJ_COPY} ${HEX_FLAGS} ${TARGET_ELF } ${TARGET_HEX}
89+ add_custom_command ( TARGET ${TARGET } POST_BUILD
90+ COMMAND ${OBJ_COPY} ${HEX_FLAGS} ${TARGET_OUT } ${TARGET_HEX}
7691 COMMENT "Creating iHex file to load: ${TARGET_HEX} "
7792 )
7893endif ()
7994
8095
8196#| Generate the Extended .LSS
8297set ( TARGET_LSS ${TARGET} .lss )
83- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
84- COMMAND ${CMAKE_OBJDUMP} ${LSS_FLAGS} ${TARGET_ELF } > ${TARGET_LSS}
98+ add_custom_command ( TARGET ${TARGET } POST_BUILD
99+ COMMAND ${CMAKE_OBJDUMP} ${LSS_FLAGS} ${TARGET_OUT } > ${TARGET_LSS}
85100 COMMENT "Creating Extended Listing: ${TARGET_LSS} "
86101)
87102
88103
89104#| Generate the Symbol Table .SYM
90105set ( TARGET_SYM ${TARGET} .sym )
91- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
92- COMMAND ${CMAKE_NM} -n ${TARGET_ELF } > ${TARGET_SYM}
106+ add_custom_command ( TARGET ${TARGET } POST_BUILD
107+ COMMAND ${CMAKE_NM} -n ${TARGET_OUT } > ${TARGET_SYM}
93108 COMMENT "Creating Symbol Table: ${TARGET_SYM} "
94109)
95110
96111
97112#| Compiler Selection Record
98- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
113+ add_custom_command ( TARGET ${TARGET } POST_BUILD
99114 COMMAND ${CMAKE_SOURCE_DIR } /Lib/CMake/writer compiler ${COMPILER_FAMILY}
100115)
101116
@@ -105,13 +120,15 @@ add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
105120# Size Information
106121#
107122
108- #| After Changes Size Information
109- add_custom_target ( SizeAfter ALL
110- COMMAND ${CMAKE_SOURCE_DIR } /Lib/CMake/sizeCalculator ${CMAKE_SIZE} ram ${TARGET_ELF} ${SIZE_RAM} " SRAM"
111- COMMAND ${CMAKE_SOURCE_DIR } /Lib/CMake/sizeCalculator ${CMAKE_SIZE} flash ${TARGET_ELF} ${SIZE_FLASH} "Flash"
112- DEPENDS ${TARGET_ELF}
113- COMMENT "Chip usage for ${CHIP} "
114- )
123+ if ( NOT DEFINED HOST )
124+ #| After Changes Size Information
125+ add_custom_target ( SizeAfter ALL
126+ COMMAND ${CMAKE_SOURCE_DIR } /Lib/CMake/sizeCalculator ${CMAKE_SIZE} ram ${TARGET_OUT} ${SIZE_RAM} " SRAM"
127+ COMMAND ${CMAKE_SOURCE_DIR } /Lib/CMake/sizeCalculator ${CMAKE_SIZE} flash ${TARGET_OUT} ${SIZE_FLASH} "Flash"
128+ DEPENDS ${TARGET}
129+ COMMENT "Chip usage for ${CHIP} "
130+ )
131+ endif ()
115132
116133
117134
@@ -150,7 +167,7 @@ if ( UNIX AND NOT DEFINED CONFIGURATOR )
150167 execute_process ( COMMAND ln -sfn ${CMAKE_BINARY_DIR } /compile_commands.json ${CMAKE_SOURCE_DIR } /. )
151168
152169 # Also update before each build
153- add_custom_command ( TARGET ${TARGET_ELF } POST_BUILD
170+ add_custom_command ( TARGET ${TARGET } POST_BUILD
154171 COMMAND ln -sfn ${CMAKE_BINARY_DIR } /compile_commands.json ${CMAKE_SOURCE_DIR } /.
155172 )
156173endif ()
0 commit comments