aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/x300/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/x300/CMakeLists.txt')
-rw-r--r--firmware/x300/CMakeLists.txt119
1 files changed, 119 insertions, 0 deletions
diff --git a/firmware/x300/CMakeLists.txt b/firmware/x300/CMakeLists.txt
new file mode 100644
index 000000000..e2de46634
--- /dev/null
+++ b/firmware/x300/CMakeLists.txt
@@ -0,0 +1,119 @@
+#
+# Copyright 2010-2012 Ettus Research LLC
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+########################################################################
+# setup project and compiler
+########################################################################
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+#force the compiler because the check wont use the special flag below
+INCLUDE(CMakeForceCompiler)
+SET(CMAKE_SYSTEM_NAME Generic)
+CMAKE_FORCE_C_COMPILER(zpu-elf-gcc GNU)
+PROJECT(B250_FW C)
+
+INCLUDE_DIRECTORIES(include)
+
+find_package(PythonInterp)
+
+########################################################################
+# lwIP header include dirs
+########################################################################
+SET(LWIPDIR ${CMAKE_SOURCE_DIR}/lwip/lwip-1.3.1)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/lwip
+ ${CMAKE_SOURCE_DIR}/lwip_port
+ ${LWIPDIR}/src/include
+ ${LWIPDIR}/src/include/ipv4
+)
+
+########################################################################
+# misc flags for the gcc compiler
+########################################################################
+SET(CMAKE_C_FLAGS -phi) #always needed compile time and link time
+SET(CMAKE_C_FLAGS_DEBUG -DX300_DEBUG_UART)
+ADD_DEFINITIONS(-Os)
+ADD_DEFINITIONS(--std=gnu99)
+ADD_DEFINITIONS(-Wall)
+ADD_DEFINITIONS(-Werror-implicit-function-declaration)
+ADD_DEFINITIONS(-ffunction-sections)
+ADD_DEFINITIONS(-DPRINTF_LONG_SUPPORT)
+
+MACRO(ADD_LINKER_FLAGS flags)
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flags}")
+ENDMACRO(ADD_LINKER_FLAGS)
+
+ADD_LINKER_FLAGS("-Wl,--gc-sections")
+ADD_LINKER_FLAGS("-Wl,--relax")
+
+########################################################################
+# setup programs for output files
+########################################################################
+FIND_PROGRAM(LINKER zpu-elf-ld)
+FIND_PROGRAM(OBJCOPY zpu-elf-objcopy)
+FIND_PROGRAM(OBJDUMP zpu-elf-objdump)
+FIND_PROGRAM(HEXDUMP hexdump)
+
+########################################################################
+# helper functions to build output formats
+########################################################################
+SET(GEN_OUTPUTS_BIN_SIZE "bin_size_not_set") #set before calling
+MACRO(GEN_OUTPUTS target)
+ GET_FILENAME_COMPONENT(name ${target} NAME_WE)
+ #command to create a map from elf
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.map DEPENDS ${target}
+ COMMAND ${LINKER} -Map ${name}.map ${target}
+ )
+ #command to create a bin from elf
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.bin DEPENDS ${target}
+ COMMAND ${OBJCOPY} -O binary ${target} ${name}.bin
+ --pad-to ${GEN_OUTPUTS_BIN_SIZE}
+ )
+ #command to create a ihx from elf
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.ihx DEPENDS ${target}
+ COMMAND ${OBJCOPY} -O ihex ${target} ${name}.ihx
+ --pad-to ${GEN_OUTPUTS_BIN_SIZE}
+ )
+ #command to create a dump from elf
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.dump DEPENDS ${target}
+ COMMAND ${OBJDUMP} -DSC ${target} > ${name}.dump
+ )
+ #command to create a rom from bin
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.rom DEPENDS ${name}.bin
+ COMMAND ${HEXDUMP} -v -e'1/1 \"%.2X\\n\"' ${name}.bin > ${name}.rom
+ )
+ #command to create a coe from bin
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${name}.coe DEPENDS ${name}.bin
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/bin_to_coe.py ${name}.bin ${name}.coe
+ )
+ #add a top level target for output files
+ ADD_CUSTOM_TARGET(
+ ${name}_outputs ALL DEPENDS ${name}.map ${name}.bin ${name}.ihx ${name}.dump ${name}.rom ${name}.coe
+ )
+ENDMACRO(GEN_OUTPUTS)
+
+########################################################################
+# Add the subdirectories
+########################################################################
+ADD_SUBDIRECTORY(lib)
+ADD_SUBDIRECTORY(x300)