Commit 40141fe2 authored by Evan Lojewski's avatar Evan Lojewski

cmake support

parent dcf61bc5
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: true
AfterClass: false
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: false
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 160
CommentPragmas: '^lint'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
// ---------------------------------------------------------------------
// This file is provided by Gimpel Software (www.gimpel.com) for use with
// its products PC-lint and FlexeLint.
//
// Redistribution and use of this file, with or without modification, is
// permitted provided that any such redistribution retains this notice.
// ---------------------------------------------------------------------
#ifndef CO_GCC_H_
#define CO_GCC_H_
/*lint -save -w1 */
#ifdef _lint /* Make sure no compiler comes this way */
#ifdef __cplusplus
extern "C" {
#endif
/* Standard library headers typically define the assert macro so that it
expands to a complicated conditional expression that uses special
funtions that Lint does not know about by default. For linting
purposes, we can simplify things a bit by forcing assert() to expand to
a call to a special function that has the appropriate 'assert'
semantics.
*/
//lint -function( __assert, __lint_assert )
void __lint_assert( int );
//lint ++d"assert(e)=__lint_assert(!!(e))"
//(++d makes this definition permanently immutable for the Lint run.)
//Now that we've made our own 'assert', we need to keep people from being
//punished when the marco in 'assert.h' appears not to be used:
//lint -efile(766,*assert.h)
typedef char *__builtin_va_list;
/*lint -e{171} */
__builtin_va_list __lint_init_va(...);
void __builtin_va_end( __builtin_va_list );
/*lint
++d"__builtin_va_start(ap,parmN)=((ap)=__lint_init_va(parmN))"
++d"__builtin_va_arg(a,b)=(*( ((b) *) ( (((a) += sizeof(b)) - sizeof(b) )))"
*/
/*
The headers included below must be generated; For C++, generate
with:
g++ [usual build options] -E -dM t.cpp >lint_cppmac.h
For C, generate with:
gcc [usual build options] -E -dM t.c >lint_cmac.h
...where "t.cpp" and "t.c" are empty source files.
It's important to use the same compiler options used when compiling
project code because they can affect the existence and precise
definitions of certain predefined macros. See gcc-readme.txt for
details and a tutorial.
*/
@DEFINES@
#define __has_feature(__x__) false
#define __has_include_next(__x__) false
/* If the macro set given by the generated macro files must be adjusted in
order for Lint to cope, then you can make those adjustments here.
*/
#define LINT_CO_GCC_H_GCC_VERSION ( __GNUC__ * 10000 + \
__GNUC_MINOR__ * 100 + \
__GNUC_PATCHLEVEL__ )
/* The following is a workaround for versions of GCC with bug 25717, in
which the preprocessor does not dump a #define directive for __STDC__
when -dM is given:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25717
We know the unconditional definition of __STDC__ was introduced no
later than version 3.0; the preprocessor bug was fixed no later than
version 4.1.0.
*/
#if ( LINT_CO_GCC_H_GCC_VERSION >= 30000 && \
LINT_CO_GCC_H_GCC_VERSION < 40100 )
# define __STDC__ 1
#endif
#if !__cplusplus && !__STRICT_ANSI__ && __STDC_VERSION__ < 199901L
/* apparently, the code is compiled with -std=gnu89 (as opposed to -std=c89),
so: */
/*lint -rw_asgn(inline,__inline) */
#endif
#if LINT_CO_GCC_H_GCC_VERSION >= 40300
# define __COUNTER__ __lint__COUNTER__
//lint +rw( *type_traits ) // Enable type traits support
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#if _lint >= 909 // For 9.00i and later:
//// __attribute__ is GCC's __attribute__:
//
//lint -rw_asgn(__attribute__,__gcc_attribute__)
//lint -rw_asgn(__attribute, __gcc_attribute__)
//
//// Prevent "__attribute__" from being defined as a macro:
//
//lint --u"__attribute__"
//lint --u"__attribute"
//
//// Because an attribute-specifier is a form of
//// declaration-modifier, and because it can appear at the
//// beginning of a decl-specifier-seq, we must enable "Early
//// Modifiers":
//
//lint +fem
#else // for 9.00h and earlier:
//lint -d__attribute__()=
//lint -d__attribute()=
#endif
#endif /* _lint */
/*lint -restore */
#endif /* CO_GCC_H_ */
/* Date Stamp */ -d"_lint_co_gcc_lnt=co-gcc.lnt modified 12-Jun-2014"
/* To document usage use: -message( "Using " _lint_co_gcc_lnt ) */
// ---------------------------------------------------------------------
// This file is provided by Gimpel Software (www.gimpel.com) for use with
// its products PC-lint and FlexeLint.
//
// Redistribution and use of this file, with or without modification, is
// permitted provided that any such redistribution retains this notice.
// ---------------------------------------------------------------------
/* co-gcc.lnt: This is the seed file for configuring Lint for use with
GCC versions 2.95.3 and later.
Like all compiler options files this file is intended to be used
as follows:
lint co-gcc.lnt source-files-to-be-linted
Some of the information that co-gcc.lnt requires needs to be furnished
with the help of the gcc system itself. The easiest way to generate
this information is to use the makefile co-gcc.mak (supplied with the
Lint distribution) in an invocation of GNU Make; for details, see the
commentary at the top of co-gcc.mak.
*/
-cgnu // Notifies FlexeLint that gcc is being used.
// ===========================
// Preprocessor Configuration:
+fdi // GCC starts its #include search in the directory of the including
// file.
++fln // Allow:
// # digit-sequence " [s-char-sequence] " new-line
// as a synonym for:
// # line digit-sequence " [s-char-sequence] " new-line
// GCC additionally allows flag values to follow the
// s-char-sequence, but currently Lint ignores them.
@INCLUDES@
// Assertion directives (a feature of GCC's preprocessor) have been
// considered obsolete in GCC's documentation since version 3.0, so we do
// not use them here. If support for #assert is needed in the form of a
// lint option, one may use '-a#' like so:
// -a#machine(i386) // #assert's machine(i386) (SVR4 facility).
// File extensions:
// From the GCC man page:
//
// file.cc
// file.cp
// file.cxx
// file.cpp
// file.CPP
// file.c++
// file.C
// C++ source code that must be preprocessed. Note that in .cxx, the
// last two letters must both be literally x. Likewise, .C refers to
// a literal capital C.
//
// We emulate this with:
+cpp(.cc)
+cpp(.cp)
+cpp(.cxx)
+cpp(.cpp)
+cpp(.c++)
// Note the exceptions:
// +cpp(.CPP)
// +cpp(.C)
// These are commented out for the default config because they seem to
// cause trouble more often than not. For starters, it is problematic
// with filesystems that are case-insensitive (which has become common
// even on some POSIX systems).
// =============
// Size Options:
// +fwc // wchar_t might be builtin; if so, uncomment this option. (NOTE:
// // this option needs to be set before a size option is given for
// // wchar_t; see the documentation for -sw# in the Lint manual.)
// size-options.lnt // This .lnt file should be generated (preferrably
// by a program created by invoking GCC with the compile options that
// are used in the compilation of the project to be linted). This
// happens automatically when 'make -f co-gcc.mak' is invoked.
// ===========================================
// +rw and -d options to cope with GNU syntax:
+ppw(ident) // Tolerate #ident
+ppw(warning)
// GCC provides alternative spellings of certain keywords:
+rw(__inline)
-rw_asgn(__inline__,__inline)
-rw_asgn(__header_always_inline,__inline)
-rw_asgn(__header_inline,__inline)
-rw_asgn(__signed__,signed)
-rw_asgn(__signed,signed)
-rw_asgn( __volatile__, volatile )
-rw_asgn( __volatile, volatile )
+rw(restrict)
-rw_asgn(__restrict,restrict)
-rw_asgn(__restrict__,restrict)
++d"__const=const" // gconv.h uses __const rather than const
++d"const=const" // ensure const expands to const.
-rw_asgn( asm, _up_to_brackets )
-rw_asgn( __asm, _up_to_brackets )
-rw_asgn( __asm__, _up_to_brackets )
// This re-definition of the various spellings of the asm keyword enables
// Lint to pass gracefully over expression-statements like:
// __asm __volatile ("fsqrt" : "=t" (__result) : "0" (__x));
// But it may be necessary to suppress certain error messages that are
// triggered by tokens that are part of an assembly declaration or
// statement. For example:
-d"__asm__(p...)=/*lint -e{19}*/ __asm__(p)"
// ...causes Lint to be quiet about the semicolon that follows an
// __asm__() declaration. Note, the -e{N} form of suppression takes
// effect only for the forward-declaration, definition or
// [possibly-compound] statement that immediately follows. Because a
// semicolon is seen as a declaration-terminator, Error 19 will be
// re-enabled immediately after the semicolon in '__asm__(...);'.
// (The elipsis after the macro parameter p allows zero or more commas to
// appear in the operand.)
//
// If you encounter other diagnostics that appear to need suppression in
// or near assembly regions, please let us know!
//
-esym(123,__asm__)
++d"_Static_assert(...)=/*lint -e{19}*/"
-rw_asgn(__alignof__,__alignof)
// "__extension__" is GCC's way of allowing the use of non-standard
// constructs in a strict Standard-conforming mode. We don't currently
// have explicit support for it, but we can use local suppressions. For
// example, we can use -e(160) so that we will not see any Errors about
// GNU statement-expressions wrapped in __extension__().
++d"__extension__=/*lint -e(160) */"
++d"__null=0"
+rw(_to_semi) // needed for the two macros above.
+rw(__typeof__) // activate __typeof__ keyword
-d"__typeof=__typeof__" // an alternative to using __typeof__
-rw(__except) // This MS reserved word is used as an identifier
+rw( __complex__, __real__, __imag__ ) // reserved words that can be ignored.
++d"__builtin_strchr=(char*)" // permits the inline definition ...
++d"__builtin_strpbrk=(char*)" // of these functions to be linted ...
++d"__builtin_strrchr=(char*)" // without drawing a complaint
++d"__builtin_strstr=(char*)" // about the use of a non-standard name
++d"__PRETTY_FUNCTION__=___function___" // lint defines ___function___ internally
++d"__FUNCTION__=___function___" // lint defines ___function___ internally
++d"__func__=___function___" // Some C++ modes suport the implicit __func__
// identifier.
-ident($)
// =========================================================
// Other options supporting GNU C/C++ syntax:
+fld // enables the processing of _L_abel _D_esignators E.g.:
// union { double d; int i; } u = { d: 3.141 };
// =========================================================
// Generally useful suppressions:
-wlib(1) // sets the warning level within library headers to 1
// (no warnings, just syntax errors). Comment out if you
// are actually linting library headers.
-elib(123) // 123 is really a warning, but it's in the "Error" range.
-elib(93) // allow newlines within quoted string arguments to macros
-elib(46) // allow bit fields to have integral types other than
// '_Bool' and 'int'.
-elibsym(628) // Suppress 628 for __builtin symbols.
-esym(528,__huge_val,__nan,__qnan,__qnanf,__snan,__snanf)
// We don't care if we don't reference some GNU functions
-esym(528,__gnu_malloc,__gnu_calloc)
// The following functions exhibit variable return modes.
// That is, they may equally-usefully be called for a value
// as called just for their effects. Accordingly we inhibit
// Warning 534 for these functions.
// Feel free to add to or subtract from this list.
-esym(534,close,creat,fclose,fprintf,fputc)
-esym(534,fputs,fscanf,fseek,fwrite,lseek,memcpy,memmove,memset)
-esym(534,printf,puts,scanf,sprintf,sscanf,strcat,strcpy)
-esym(534,strncat,strncpy,unlink,write)
// For non-ANSI compilers we suppress messages 515 and 516
// for functions known to have variable argument lists.
// For ANSI compilers, header files should take care of this.
-esym(515,fprintf,printf,sprintf,fscanf,scanf,sscanf)
-esym(516,fprintf,printf,sprintf,fscanf,scanf,sscanf)
-esym(1702,*operator<<,*operator>>)
-esym(534,*operator<<,*operator>>)
-esym(1055,*__builtin*)
-esym(718,*__builtin*) // The compiler does not need these ...
-esym(746,*__builtin*) // declared and it knows their prototypes.
-rw_asgn(__attribute__,__gcc_attribute__)
-rw_asgn(__attribute,__gcc_attribute__)
--u"__attribute__"
--u"__attribute"
+linebuf
+linebuf
//-esym(507, MII_readRegister)
-e507
-sp4
-e755
-e756
-e768
-e526
-e793
################################################################################
###
### @file CMakeLists.txt
###
### @project
###
### @brief Top level CMake file
###
################################################################################
###
################################################################################
###
### @copyright Copyright (c) 2018-2020, Evan Lojewski
### @cond
###
### All rights reserved.
###
### Redistribution and use in source and binary forms, with or without
### modification, are permitted provided that the following conditions are met:
### 1. Redistributions of source code must retain the above copyright notice,
### this list of conditions and the following disclaimer.
### 2. Redistributions in binary form must reproduce the above copyright notice,
### this list of conditions and the following disclaimer in the documentation
### and/or other materials provided with the distribution.
### 3. Neither the name of the copyright holder nor the
### names of its contributors may be used to endorse or promote products
### derived from this software without specific prior written permission.
###
################################################################################
###
### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
### ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
### INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
### CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
### ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
### POSSIBILITY OF SUCH DAMAGE.
### @endcond
################################################################################
enable_testing()
include(GoogleTest)
FIND_PROGRAM(CMAKE_C_COMPILER
NAMES flint_clang clang
REQUIRED)
FIND_PROGRAM(CMAKE_CXX_COMPILER
NAMES flint_clang++ clang++
REQUIRED)
FIND_PROGRAM(CMAKE_ASM_COMPILER
NAMES clang
REQUIRED)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
include(cmake/version.cmake)
cmake_minimum_required(VERSION 3.5.1)
project(bootrom VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
include(cmake/clang-format.cmake)
include(cmake/clang-analyzer.cmake)
include(cmake/config.cmake)
add_subdirectory(utils)
# Default include for all subprojects
include_directories(include)
add_definitions("-D__microwatt__")
add_subdirectory(libbase)
add_subdirectory(liblitedram)
add_subdirectory(libliteeth)
add_subdirectory(liblitesdcard)
add_subdirectory(liblitespi)
add_subdirectory(bios)
BSD 3-Clause License
Copyright (c) 2021, Evan Lojewski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ROOT_DIR:=$(abspath ${dir $(lastword $(MAKEFILE_LIST))}/)
include ${ROOT_DIR}/include/generated/variables.mak
include ${ROOT_DIR}/common.mak
SUBDIRS := bios libbase liblitedram libliteeth liblitesdcard liblitespi
CLEAN_RULES = ${foreach dir,${SUBDIRS},clean-${dir}}
all: bin2init-build/bin2init/bin2init
@${MAKE} -C bios
bin2init-build/bin2init/bin2init -i bios/bios.bin -o bios.init
${CLEAN_RULES}:
@${MAKE} -C ${subst clean-,,$@} clean
clean: ${CLEAN_RULES}
bin2init-build/bin2init/bin2init:
rm -rf bin2init-build
mkdir bin2init-build
cd bin2init-build && cmake ../utils/
cd bin2init-build && make
################################################################################
###
### @file bios/CMakeLists.txt
###
### @project
###
### @brief bios CMake file
###
################################################################################
###
################################################################################
###
### @copyright Copyright (c) 2018-2021, Evan Lojewski
### @cond
###
### All rights reserved.
###
### Redistribution and use in source and binary forms, with or without
### modification, are permitted provided that the following conditions are met:
### 1. Redistributions of source code must retain the above copyright notice,
### this list of conditions and the following disclaimer.
### 2. Redistributions in binary form must reproduce the above copyright notice,
### this list of conditions and the following disclaimer in the documentation
### and/or other materials provided with the distribution.
### 3. Neither the name of the copyright holder nor the
### names of its contributors may be used to endorse or promote products
### derived from this software without specific prior written permission.
###
################################################################################
###
### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
### ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
### INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
### CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
### ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
### POSSIBILITY OF SUCH DAMAGE.
### @endcond
################################################################################
project(bios)
SET(SOURCE
isr.c
../libbase/crt0.S
../libbase/boot-helper.S
boot.c
helpers.c
# readline_simple.c
cmds/cmd_bios.c
cmds/cmd_mem.c
cmds/cmd_boot.c
cmds/cmd_i2c.c
cmds/cmd_spiflash.c
cmds/cmd_litedram.c
cmds/cmd_liteeth.c
cmds/cmd_litesdcard.c
main.c
complete.c
readline.c
)
# PPC64LE library
ppc64le_add_executable(${PROJECT_NAME} ${SOURCE})
ppc64le_linker_script(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/linker.ld")
target_link_libraries(${PROJECT_NAME} PRIVATE liblitedram libbase-nofloat libliteeth liblitespi liblitesdcard)
target_include_directories(${PROJECT_NAME} PUBLIC include)
# target_compile_definitions(${PROJECT_NAME} PRIVATE "-DTERM_NO_HIST")
format_target_sources(${PROJECT_NAME})
ROOT_DIR:=$(abspath ${dir $(lastword $(MAKEFILE_LIST))}/../)
include ${ROOT_DIR}/include/generated/variables.mak
include ${ROOT_DIR}/common.mak
# Permit TFTP_SERVER_PORT override from shell environment / command line
ifdef TFTP_SERVER_PORT
CFLAGS += -DTFTP_SERVER_PORT=$(TFTP_SERVER_PORT)
endif
OBJECTS = isr.o \
boot-helper.o \
boot.o \
helpers.o \
cmd_bios.o \
cmd_mem.o \
cmd_boot.o \
cmd_i2c.o \
cmd_spiflash.o \
cmd_litedram.o \
cmd_liteeth.o \
cmd_litesdcard.o \
main.o
ifneq "$(or $(TERM_NO_COMPLETE),$(TERM_MINI))" ""
CFLAGS += -DTERM_NO_COMPLETE
else
OBJECTS += complete.o
endif
ifdef TERM_NO_HIST
CFLAGS += -DTERM_NO_HIST
endif
ifdef TERM_MINI
CFLAGS += -DTERM_MINI
OBJECTS += readline_simple.o
else
OBJECTS += readline.o
endif
all: bios.bin
$(PYTHON) -m litex.soc.software.memusage bios.elf $(CURDIR)/../include/generated/regions.ld $(TRIPLE)
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
ifneq ($(OS),Windows_NT)
chmod -x $@
endif
ifeq ($(CPUENDIANNESS),little)
$(PYTHON) -m litex.soc.software.mkmscimg $@ --little
else
$(PYTHON) -m litex.soc.software.mkmscimg $@
endif
bios.elf: $(BIOS_DIRECTORY)/linker.ld $(OBJECTS)
%.a: ${dir $@}
@${MAKE} -C ${dir $@}
${ROOT_DIR}/libbase/crt0.o: ${ROOT_DIR}/libbase/libbase-nofloat.a
%.elf: ${ROOT_DIR}/libbase/crt0.o \
${ROOT_DIR}/libbase/libbase-nofloat.a \
${ROOT_DIR}/liblitedram/liblitedram.a \
${ROOT_DIR}/libliteeth/libliteeth.a \
${ROOT_DIR}/liblitespi/liblitespi.a \
${ROOT_DIR}/liblitesdcard/liblitesdcard.a
$(LD) $(LDFLAGS) -T $(BIOS_DIRECTORY)/linker.ld -N -o $@ \
${ROOT_DIR}/libbase/crt0.o \
$(OBJECTS) \
-L${ROOT_DIR}/libbase \