From 283345163df0f43531df963d374c57e8402ad57b Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Tue, 29 Nov 2011 14:59:24 -0400 Subject: [PATCH] Allow things to be built from a git clone. --- linux-2.6.21.x/arch/mips/kernel/vmlinux.lds.S | 172 +++++++++++++ .../include/asm-generic/vmlinux.lds.h | 231 ++++++++++++++++++ user/minidlna/genconfig.sh | 64 ++--- user/rt2880_app/Makefile | 1 + user/rt2880_app/libusb-1.0.6/Makefile.am | 8 + 5 files changed, 444 insertions(+), 32 deletions(-) create mode 100644 linux-2.6.21.x/arch/mips/kernel/vmlinux.lds.S create mode 100644 linux-2.6.21.x/include/asm-generic/vmlinux.lds.h diff --git a/linux-2.6.21.x/arch/mips/kernel/vmlinux.lds.S b/linux-2.6.21.x/arch/mips/kernel/vmlinux.lds.S new file mode 100644 index 00000000..7579c244 --- /dev/null +++ b/linux-2.6.21.x/arch/mips/kernel/vmlinux.lds.S @@ -0,0 +1,172 @@ +#include +#include + +#undef mips +#define mips mips +OUTPUT_ARCH(mips) +ENTRY(kernel_entry) +jiffies = JIFFIES; +SECTIONS +{ +#ifdef CONFIG_BOOT_ELF64 + /* Read-only sections, merged into text segment: */ + /* . = 0xc000000000000000; */ + + /* This is the value for an Origin kernel, taken from an IRIX kernel. */ + /* . = 0xc00000000001c000; */ + + /* Set the vaddr for the text segment to a value + >= 0xa800 0000 0001 9000 if no symmon is going to configured + >= 0xa800 0000 0030 0000 otherwise */ + + /* . = 0xa800000000300000; */ + /* . = 0xa800000000300000; */ + . = 0xffffffff80300000; +#endif + . = LOADADDR; + /* read-only */ + _text = .; /* Text and read-only data */ + .text : { + *(.text) + SCHED_TEXT + LOCK_TEXT + *(.fixup) + *(.gnu.warning) + } =0 + + _etext = .; /* End of text section */ + + . = ALIGN(16); /* Exception table */ + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + __start___dbe_table = .; /* Exception table for data bus errors */ + __dbe_table : { *(__dbe_table) } + __stop___dbe_table = .; + + RODATA + + /* writeable */ + .data : { /* Data */ + . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ + /* + * This ALIGN is needed as a workaround for a bug a gcc bug upto 4.1 which + * limits the maximum alignment to at most 32kB and results in the following + * warning: + * + * CC arch/mips/kernel/init_task.o + * arch/mips/kernel/init_task.c:30: warning: alignment of ‘init_thread_union’ + * is greater than maximum object file alignment. Using 32768 + */ + . = ALIGN(_PAGE_SIZE); + *(.data.init_task) + + *(.data) + + CONSTRUCTORS + } + _gp = . + 0x8000; + .lit8 : { *(.lit8) } + .lit4 : { *(.lit4) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : { *(.sdata) } + + . = ALIGN(_PAGE_SIZE); + __nosave_begin = .; + .data_nosave : { *(.data.nosave) } + . = ALIGN(_PAGE_SIZE); + __nosave_end = .; + + . = ALIGN(32); + .data.cacheline_aligned : { *(.data.cacheline_aligned) } + + _edata = .; /* End of data section */ + + /* will be freed after init */ + . = ALIGN(_PAGE_SIZE); /* Init code and data */ + __init_begin = .; + .init.text : { + _sinittext = .; + *(.init.text) + _einittext = .; + } + .init.data : { *(.init.data) } + . = ALIGN(16); + __setup_start = .; + .init.setup : { *(.init.setup) } + __setup_end = .; + + __initcall_start = .; + .initcall.init : { + INITCALLS + } + __initcall_end = .; + + __con_initcall_start = .; + .con_initcall.init : { *(.con_initcall.init) } + __con_initcall_end = .; + SECURITY_INIT + /* .exit.text is discarded at runtime, not link time, to deal with + references from .rodata */ + .exit.text : { *(.exit.text) } + .exit.data : { *(.exit.data) } +#if defined(CONFIG_BLK_DEV_INITRD) + . = ALIGN(_PAGE_SIZE); + __initramfs_start = .; + .init.ramfs : { *(.init.ramfs) } + __initramfs_end = .; +#endif + . = ALIGN(32); + __per_cpu_start = .; + .data.percpu : { *(.data.percpu) } + __per_cpu_end = .; + . = ALIGN(_PAGE_SIZE); + __init_end = .; + /* freed after init ends here */ + + __bss_start = .; /* BSS */ + .sbss : { + *(.sbss) + *(.scommon) + } + .bss : { + *(.bss) + *(COMMON) + *(.cod0) + *(.cod1) + *(.dec0) + *(.dec1) + } + __bss_stop = .; + + _end = . ; + + /* Sections to be discarded */ + /DISCARD/ : { + *(.exitcall.exit) + + /* ABI crap starts here */ + *(.comment) + *(.MIPS.options) + *(.note) + *(.options) + *(.pdr) + *(.reginfo) + *(.mdebug*) + } + + /* This is the MIPS specific mdebug section. */ + .mdebug : { *(.mdebug) } + + STABS_DEBUG + + DWARF_DEBUG + + /* These must appear regardless of . */ + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } + .note : { *(.note) } +} diff --git a/linux-2.6.21.x/include/asm-generic/vmlinux.lds.h b/linux-2.6.21.x/include/asm-generic/vmlinux.lds.h new file mode 100644 index 00000000..9fcc8d9f --- /dev/null +++ b/linux-2.6.21.x/include/asm-generic/vmlinux.lds.h @@ -0,0 +1,231 @@ +#ifndef LOAD_OFFSET +#define LOAD_OFFSET 0 +#endif + +#ifndef VMLINUX_SYMBOL +#define VMLINUX_SYMBOL(_sym_) _sym_ +#endif + +/* Align . to a 8 byte boundary equals to maximum function alignment. */ +#define ALIGN_FUNCTION() . = ALIGN(8) + +#define RODATA \ + . = ALIGN(4096); \ + .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start_rodata) = .; \ + *(.rodata) *(.rodata.*) \ + *(__vermagic) /* Kernel version magic */ \ + } \ + \ + .rodata1 : AT(ADDR(.rodata1) - LOAD_OFFSET) { \ + *(.rodata1) \ + } \ + \ + /* PCI quirks */ \ + .pci_fixup : AT(ADDR(.pci_fixup) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start_pci_fixups_early) = .; \ + *(.pci_fixup_early) \ + VMLINUX_SYMBOL(__end_pci_fixups_early) = .; \ + VMLINUX_SYMBOL(__start_pci_fixups_header) = .; \ + *(.pci_fixup_header) \ + VMLINUX_SYMBOL(__end_pci_fixups_header) = .; \ + VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \ + *(.pci_fixup_final) \ + VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \ + VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ + *(.pci_fixup_enable) \ + VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ + VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \ + *(.pci_fixup_resume) \ + VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \ + } \ + \ + /* RapidIO route ops */ \ + .rio_route : AT(ADDR(.rio_route) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start_rio_route_ops) = .; \ + *(.rio_route_ops) \ + VMLINUX_SYMBOL(__end_rio_route_ops) = .; \ + } \ + \ + /* Kernel symbol table: Normal symbols */ \ + __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___ksymtab) = .; \ + *(__ksymtab) \ + VMLINUX_SYMBOL(__stop___ksymtab) = .; \ + } \ + \ + /* Kernel symbol table: GPL-only symbols */ \ + __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \ + *(__ksymtab_gpl) \ + VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ + } \ + \ + /* Kernel symbol table: Normal unused symbols */ \ + __ksymtab_unused : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___ksymtab_unused) = .; \ + *(__ksymtab_unused) \ + VMLINUX_SYMBOL(__stop___ksymtab_unused) = .; \ + } \ + \ + /* Kernel symbol table: GPL-only unused symbols */ \ + __ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .; \ + *(__ksymtab_unused_gpl) \ + VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .; \ + } \ + \ + /* Kernel symbol table: GPL-future-only symbols */ \ + __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \ + *(__ksymtab_gpl_future) \ + VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \ + } \ + \ + /* Kernel symbol table: Normal symbols */ \ + __kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___kcrctab) = .; \ + *(__kcrctab) \ + VMLINUX_SYMBOL(__stop___kcrctab) = .; \ + } \ + \ + /* Kernel symbol table: GPL-only symbols */ \ + __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___kcrctab_gpl) = .; \ + *(__kcrctab_gpl) \ + VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \ + } \ + \ + /* Kernel symbol table: Normal unused symbols */ \ + __kcrctab_unused : AT(ADDR(__kcrctab_unused) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___kcrctab_unused) = .; \ + *(__kcrctab_unused) \ + VMLINUX_SYMBOL(__stop___kcrctab_unused) = .; \ + } \ + \ + /* Kernel symbol table: GPL-only unused symbols */ \ + __kcrctab_unused_gpl : AT(ADDR(__kcrctab_unused_gpl) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___kcrctab_unused_gpl) = .; \ + *(__kcrctab_unused_gpl) \ + VMLINUX_SYMBOL(__stop___kcrctab_unused_gpl) = .; \ + } \ + \ + /* Kernel symbol table: GPL-future-only symbols */ \ + __kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___kcrctab_gpl_future) = .; \ + *(__kcrctab_gpl_future) \ + VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \ + } \ + \ + /* Kernel symbol table: strings */ \ + __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ + *(__ksymtab_strings) \ + } \ + \ + /* Built-in module parameters. */ \ + __param : AT(ADDR(__param) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__start___param) = .; \ + *(__param) \ + VMLINUX_SYMBOL(__stop___param) = .; \ + VMLINUX_SYMBOL(__end_rodata) = .; \ + } \ + \ + . = ALIGN(4096); + +#define SECURITY_INIT \ + .security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \ + VMLINUX_SYMBOL(__security_initcall_start) = .; \ + *(.security_initcall.init) \ + VMLINUX_SYMBOL(__security_initcall_end) = .; \ + } + +/* sched.text is aling to function alignment to secure we have same + * address even at second ld pass when generating System.map */ +#define SCHED_TEXT \ + ALIGN_FUNCTION(); \ + VMLINUX_SYMBOL(__sched_text_start) = .; \ + *(.sched.text) \ + VMLINUX_SYMBOL(__sched_text_end) = .; + +/* spinlock.text is aling to function alignment to secure we have same + * address even at second ld pass when generating System.map */ +#define LOCK_TEXT \ + ALIGN_FUNCTION(); \ + VMLINUX_SYMBOL(__lock_text_start) = .; \ + *(.spinlock.text) \ + VMLINUX_SYMBOL(__lock_text_end) = .; + +#define KPROBES_TEXT \ + ALIGN_FUNCTION(); \ + VMLINUX_SYMBOL(__kprobes_text_start) = .; \ + *(.kprobes.text) \ + VMLINUX_SYMBOL(__kprobes_text_end) = .; + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to + the beginning of the section so we begin them at 0. */ +#define DWARF_DEBUG \ + /* DWARF 1 */ \ + .debug 0 : { *(.debug) } \ + .line 0 : { *(.line) } \ + /* GNU DWARF 1 extensions */ \ + .debug_srcinfo 0 : { *(.debug_srcinfo) } \ + .debug_sfnames 0 : { *(.debug_sfnames) } \ + /* DWARF 1.1 and DWARF 2 */ \ + .debug_aranges 0 : { *(.debug_aranges) } \ + .debug_pubnames 0 : { *(.debug_pubnames) } \ + /* DWARF 2 */ \ + .debug_info 0 : { *(.debug_info \ + .gnu.linkonce.wi.*) } \ + .debug_abbrev 0 : { *(.debug_abbrev) } \ + .debug_line 0 : { *(.debug_line) } \ + .debug_frame 0 : { *(.debug_frame) } \ + .debug_str 0 : { *(.debug_str) } \ + .debug_loc 0 : { *(.debug_loc) } \ + .debug_macinfo 0 : { *(.debug_macinfo) } \ + /* SGI/MIPS DWARF 2 extensions */ \ + .debug_weaknames 0 : { *(.debug_weaknames) } \ + .debug_funcnames 0 : { *(.debug_funcnames) } \ + .debug_typenames 0 : { *(.debug_typenames) } \ + .debug_varnames 0 : { *(.debug_varnames) } \ + + /* Stabs debugging sections. */ +#define STABS_DEBUG \ + .stab 0 : { *(.stab) } \ + .stabstr 0 : { *(.stabstr) } \ + .stab.excl 0 : { *(.stab.excl) } \ + .stab.exclstr 0 : { *(.stab.exclstr) } \ + .stab.index 0 : { *(.stab.index) } \ + .stab.indexstr 0 : { *(.stab.indexstr) } \ + .comment 0 : { *(.comment) } + +#define BUG_TABLE \ + . = ALIGN(8); \ + __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ + __start___bug_table = .; \ + *(__bug_table) \ + __stop___bug_table = .; \ + } + +#define NOTES \ + .notes : { *(.note.*) } :note + +#define INITCALLS \ + *(.initcall0.init) \ + *(.initcall0s.init) \ + *(.initcall1.init) \ + *(.initcall1s.init) \ + *(.initcall2.init) \ + *(.initcall2s.init) \ + *(.initcall3.init) \ + *(.initcall3s.init) \ + *(.initcall4.init) \ + *(.initcall4s.init) \ + *(.initcall5.init) \ + *(.initcall5s.init) \ + *(.initcallrootfs.init) \ + *(.initcall6.init) \ + *(.initcall6s.init) \ + *(.initcall7.init) \ + *(.initcall7s.init) + diff --git a/user/minidlna/genconfig.sh b/user/minidlna/genconfig.sh index 3a5060ae..d1aacd5c 100755 --- a/user/minidlna/genconfig.sh +++ b/user/minidlna/genconfig.sh @@ -41,28 +41,28 @@ ${RM} ${CONFIGFILE} # Detect if there are missing headers # NOTE: This check only works with a normal distro -[ ! -e "/usr/include/sqlite3.h" ] && MISSING="libsqlite3 $MISSING" -[ ! -e "/usr/include/jpeglib.h" ] && MISSING="libjpeg $MISSING" -[ ! -e "/usr/include/libexif/exif-loader.h" ] && MISSING="libexif $MISSING" -[ ! -e "/usr/include/id3tag.h" ] && MISSING="libid3tag $MISSING" -[ ! -e "/usr/include/ogg/ogg.h" ] && MISSING="libogg $MISSING" -[ ! -e "/usr/include/vorbis/codec.h" ] && MISSING="libvorbis $MISSING" -[ ! -e "/usr/include/FLAC/metadata.h" ] && MISSING="libflac $MISSING" -[ ! -e "/usr/local/include/ffmpeg/avutil.h" -a \ - ! -e "/usr/local/include/libavutil/avutil.h" -a \ - ! -e "/usr/local/include/ffmpeg/libavutil/avutil.h" ] && MISSING="libavutil $MISSING" -[ ! -e "/usr/local/include/ffmpeg/avformat.h" -a \ - ! -e "/usr/local/include/libavformat/avformat.h" -a \ - ! -e "/usr/local/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libavformat $MISSING" -[ ! -e "/usr/local/include/ffmpeg/avcodec.h" -a \ - ! -e "/usr/local/include/libavcodec/avcodec.h" -a \ - ! -e "/usr/local/include/ffmpeg/libavcodec/avcodec.h" ] && MISSING="libavcodec $MISSING" -if [ -n "$MISSING" ]; then - echo -e "\nERROR! Cannot continue." - echo -e "The following required libraries are either missing, or are missing development headers:\n" - echo -e "$MISSING\n" - exit 1 -fi +#[ ! -e "/usr/include/sqlite3.h" ] && MISSING="libsqlite3 $MISSING" +#[ ! -e "/usr/include/jpeglib.h" ] && MISSING="libjpeg $MISSING" +#[ ! -e "/usr/include/libexif/exif-loader.h" ] && MISSING="libexif $MISSING" +#[ ! -e "/usr/include/id3tag.h" ] && MISSING="libid3tag $MISSING" +#[ ! -e "/usr/include/ogg/ogg.h" ] && MISSING="libogg $MISSING" +#[ ! -e "/usr/include/vorbis/codec.h" ] && MISSING="libvorbis $MISSING" +#[ ! -e "/usr/include/FLAC/metadata.h" ] && MISSING="libflac $MISSING" +#[ ! -e "/usr/local/include/ffmpeg/avutil.h" -a \ +# ! -e "/usr/local/include/libavutil/avutil.h" -a \ +# ! -e "/usr/local/include/ffmpeg/libavutil/avutil.h" ] && MISSING="libavutil $MISSING" +#[ ! -e "/usr/local/include/ffmpeg/avformat.h" -a \ +# ! -e "/usr/local/include/libavformat/avformat.h" -a \ +# ! -e "/usr/local/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libavformat $MISSING" +#[ ! -e "/usr/local/include/ffmpeg/avcodec.h" -a \ +# ! -e "/usr/local/include/libavcodec/avcodec.h" -a \ +# ! -e "/usr/local/include/ffmpeg/libavcodec/avcodec.h" ] && MISSING="libavcodec $MISSING" +#if [ -n "$MISSING" ]; then +# echo -e "\nERROR! Cannot continue." +# echo -e "The following required libraries are either missing, or are missing development headers:\n" +# echo -e "$MISSING\n" +# exit 1 +#fi echo "/* MiniDLNA Project" >> ${CONFIGFILE} echo " * http://sourceforge.net/projects/minidlna/" >> ${CONFIGFILE} @@ -163,11 +163,11 @@ echo "#define OS_URL \"${OS_URL}\"" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* full path of the file database */" >> ${CONFIGFILE} -echo "#define DEFAULT_DB_PATH \"${DB_PATH}\"" >> ${CONFIGFILE} +echo "#define DEFAULT_DB_PATH \"/tmp/harddisk/part0/.dms\"" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* full path of the log directory */" >> ${CONFIGFILE} -echo "#define DEFAULT_LOG_PATH \"${LOG_PATH}\"" >> ${CONFIGFILE} +echo "#define DEFAULT_LOG_PATH \"/tmp/harddisk/part0/.dms\"" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* Comment the following line to use home made daemonize() func instead" >> ${CONFIGFILE} @@ -176,11 +176,11 @@ echo "#define USE_DAEMON" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* Enable if the system inotify.h exists. Otherwise our own inotify.h will be used. */" >> ${CONFIGFILE} -if [ -f /usr/include/sys/inotify.h ]; then -echo "#define HAVE_INOTIFY_H" >> ${CONFIGFILE} -else +#if [ -f /usr/include/sys/inotify.h ]; then +#echo "#define HAVE_INOTIFY_H" >> ${CONFIGFILE} +#else echo "/*#define HAVE_INOTIFY_H*/" >> ${CONFIGFILE} -fi +#fi echo "" >> ${CONFIGFILE} echo "/* Enable if the system iconv.h exists. ID3 tag reading in various character sets will not work properly otherwise. */" >> ${CONFIGFILE} @@ -193,11 +193,11 @@ fi echo "" >> ${CONFIGFILE} echo "/* Enable if the system libintl.h exists for NLS support. */" >> ${CONFIGFILE} -if [ -f /usr/include/libintl.h ]; then -echo "#define ENABLE_NLS" >> ${CONFIGFILE} -else +#if [ -f /usr/include/libintl.h ]; then +#echo "#define ENABLE_NLS" >> ${CONFIGFILE} +#else echo "/*#define ENABLE_NLS*/" >> ${CONFIGFILE} -fi +#fi echo "" >> ${CONFIGFILE} echo "/* Enable NETGEAR-specific tweaks. */" >> ${CONFIGFILE} diff --git a/user/rt2880_app/Makefile b/user/rt2880_app/Makefile index b40eccda..48279816 100644 --- a/user/rt2880_app/Makefile +++ b/user/rt2880_app/Makefile @@ -32,6 +32,7 @@ libusb10-config: ( if [ -f ./config_done ]; then \ echo "the same configuration"; \ else \ + autoreconf -i; \ ./configure --prefix=$(PWD_DIR)/libusb-1.0.6/build --enable-shared --host=mipsel-linux; \ rm -f config_done; \ touch config_done; \ diff --git a/user/rt2880_app/libusb-1.0.6/Makefile.am b/user/rt2880_app/libusb-1.0.6/Makefile.am index 1b65a92e..96f7e1ad 100644 --- a/user/rt2880_app/libusb-1.0.6/Makefile.am +++ b/user/rt2880_app/libusb-1.0.6/Makefile.am @@ -11,6 +11,14 @@ endif pkgconfigdir=$(libdir)/pkgconfig pkgconfig_DATA=libusb-1.0.pc +romfs: all + cp -f libusb/.libs/libusb-1.0.so.0.0.0 . + ln -sf libusb-1.0.so.0.0.0 libusb-1.0.so.0 + ln -sf libusb-1.0.so.0.0.0 libusb-1.0.so + $(ROMFSINST) /lib/libusb-1.0.so.0.0.0 + $(ROMFSINST) /lib/libusb-1.0.so.0 + $(ROMFSINST) /lib/libusb-1.0.so + .PHONY: ChangeLog dist-up ChangeLog: git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog