source "target/toolchain/Config.in"
+source "target/ccsdisk/Config.in"
+
source "tmp/.config-package.in"
checksum: FORCE
$(call sha256sums,$(BIN_DIR))
+ccsdisk: $(target/ccsdisk/install)
+
diffconfig: FORCE
mkdir -p $(BIN_DIR)
$(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.seed
--- /dev/null
+# CCS (Complete Corresponding Source) Requirements
+
+As a Free Software project, libreCMC works to go above and
+beyond its license obligations to be a good neighbor and to
+promote the ideals of Free Software. The project was founded
+on the idea that everyone should have the *freedom* to control
+the hardware they own, which means being able to fully control
+what it does and what runs on it. To ensure that everyone continues
+to have this freedom, a mechanism was added to the build system [1]
+to generate a CCS disk which OEMs and others would be able to
+distribute with devices for compliance and to push the idea that
+sources should be provided with a device at the time of sale.
+
+## `make ccsdisk`
+
+A new target was created to build a CCS disk based upon the option of upstream
+sources or to use a local checkout. As it stands, this includes everything except
+for u-boot sources for a given target. In the near future, the libreCMC project
+will start including versions of u-boot for all offically supported targets and
+going forward a requirement for offical hardware support will be u-boot in libreCMC.
+
+
+[1] libreCMC is a fork of OpenWrt, which both use a fork of [Buildroot](https://buildroot.org).
#
curdir:=target
-$(curdir)/builddirs:=linux sdk imagebuilder toolchain
+$(curdir)/builddirs:=linux sdk imagebuilder toolchain ccsdisk
$(curdir)/builddirs-default:=linux
-$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain)
+$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain) $(if $(CONFIG_CCS),ccsdisk)
$(curdir)/sdk/install:=$(curdir)/linux/install
$(curdir)/imagebuilder/install:=$(curdir)/linux/install
+$(curdir)/ccsdisk/install:=$(curdir)/ccsdisk/install
$(eval $(call stampfile,$(curdir),target,prereq,.config))
$(eval $(call stampfile,$(curdir),target,compile,$(TMP_DIR)/.build))
--- /dev/null
+menuconfig CCS
+ bool "Build the libreCMC CCS (Complete Corresponding Source) Disk"
+ depends on !EXTERNAL_TOOLCHAIN
+ default BUILDBOT
+ help
+ This generates a CCS disk for distribution with devices that ship
+ with libreCMC. Note that this may omit some components, ex. u-boot
+ for a given target, which should be part of the CCS. Please see /docs/ccs.md
+
+ config CCS_GIT_UPSTREAM
+ string "Enter git repository to clone" if CCS
+ default "https://gogs.librecmc.org/librecmc" if !CCS_GIT_TOPDIR
+
+ config CCS_GIT_TOPDIR
+ bool "Use local checkout for sources" if CCS
+ help
+ If using this option, make sure that all changes have been
+ properly checked in.
+
+
+
--- /dev/null
+#
+# Copyright (C) 2019 Robert Call <bob@bobcall.me>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
+
+override MAKEFLAGS=
+
+CCS_NAME:=$(VERSION_DIST_SANITIZED)-$(VERSION_NUMBER)-src
+CCS_BUILD_DIR:=$(BUILD_DIR)/$(CCS_NAME)
+ISO_BUILD_DIR:=$(CCS_BUILD_DIR)/iso
+
+all: install
+
+$(BIN_DIR)/$(CCS_NAME).tar.gz:
+ mkdir -p $(BIN_DIR)
+ mkdir -p $(CCS_BUILD_DIR)
+ $(if $(CONFIG_CCS_GIT_TOPDIR),(cd $(CCS_BUILD_DIR); git clone $(TOPDIR) librecmc),(cd $(CCS_BUILD_DIR); git clone $(CONFIG_CCS_GIT_UPSTREAM) librecmc))
+ $(CP) $(TOPDIR)/.config $(CCS_BUILD_DIR)/librecmc
+ $(CP) -r $(TOPDIR)/dl $(CCS_BUILD_DIR)/librecmc/
+
+createiso:
+ mkdir -p $(ISO_BUILD_DIR)/bin/$(BOARD)
+ (cd $(CCS_BUILD_DIR); $(TAR) -czf $(ISO_BUILD_DIR)/$(CCS_NAME).tar.gz librecmc)
+ $(CP) ./files/README $(ISO_BUILD_DIR)
+ $(CP) $(BIN_DIR) $(ISO_BUILD_DIR)/bin/$(BOARD)
+ $(VERSION_SED_SCRIPT) $(ISO_BUILD_DIR)/README
+ genisoimage -J -joliet-long -r -o $(BIN_DIR)/$(CCS_NAME).iso $(ISO_BUILD_DIR)
+
+download:
+compile:
+install: clean $(BIN_DIR)/$(CCS_NAME).tar.gz createiso
+
+
+clean:
+ rm -rf $(CCS_BUILD_DIR) $(BIN_DIR)/$(CCS_NAME).tar.gz $(BIN_DIR)/$(CCS_NAME)-src.iso
--- /dev/null
+ ____ _____ ____
+ _ _ _ | __|| || __|
+ | (_) |__ _ _ ___ | | | | | || |
+ | | | '_ \ '_/ -_)| |__ | | | || |__
+ |_|_|_.__/_| \___||____||_|_|_||____|
+ -----------------------------------------
+ The libre embedded GNU/Linux distro.
+
+This compact disk contains the source code and firmware images
+for the %T line of routers.
+
+
+Disk Layout:
+============================
+
+/bin/%T/* : Contains firmware images for %T family of routers
+
+
+libreCMC-%V-src.tar.gz : The full libreCMC source code w/ original configuration.
+
+
+Building libreCMC image from source:
+============================
+
+To build your own firmware, you need to have access to a GNU/Linux system
+(case-sensitive filesystem required) with the following installed :
+
+gcc, binutils, bzip2, flex, python, perl, make, find,
+grep, diff, unzip, gawk, getopt, libssl-dev (openssl-devel), libz-dev and libc headers.
+
+References to this and other documentation use : "$LIBRECMC_SRC" , which
+is the directory where the libreCMC source code resides.
+
+Before starting, please extract : libreCMC-%V.tar.gz
+
+tar fxv librecmc-%V.tar.gz
+
+cd libreCMC/
+
+Within the libreCMC src. directory (in this case, trunk), please use "make menuconfig" to create your
+desired configuration for the toolchain and firmware. Please note that the default configuration is
+what was used to build the firmware image for your router. It is advised that you use this configuration. If
+you need to restore the default configuration, copy librecmc_config to libreCMC/trunk/.config
+
+Simply running "make" will build your firmware. The build system will extract all included sources,
+build the cross-compile toolchain, the kernel and all chosen applications. If there is an issue, please run:
+
+make V=s
+
+This will show debugging output and give a clue as to why the build failed.
+
+When the build completes without any issues, the resulting librecmc-ar71xx-generic-tpe-r1100-squashfs-sysupgrade.bin image will
+be found in : $SRC_ROOT/bin/targets/ar71xx/
+
+Flashing The libreCMC firmware
+============================
+
+1) Open a web browser and go to : https://192.168.10.1
+
+2) You will see a security warning because SSL cert is self-
+signed. Click the "understand the risks" and then "add exception" buttons.
+
+3) Enter the admin password for the router (stock password is : none )
+
+4) The backup / flash utility is under "System -> Backup / Flash Firmware".
+
+5) Make sure to backup your configuration (if you are upgrading to a new release)
+by clicking the "Generate archive" button. This will download a file named
+backup-libreCMC-$(DATE).tar.gz
+
+6) Upload the new firmware by clicking the "browse" button under "Flash new firmware image".
+If you wish to keep your current settings, make sure that the "Keep Settings" checkbox is
+checked. If the file name is correct, make sure to click the "Flash Image" button.
+
+7) Wait a about 1 - 2.5 min. The router will restart itself then the page should refresh, bringing
+you back to the login page.
+
+
+Final Words
+============================
+
+We would like to thank you for supporting the libreCMC project. If you find any
+software in this release that is non-free software, please report it to info@librecmc.org.
+We will review the offending piece of software and devise a workaround or patch.
+libreCMC aims to always be a 100% libre Free Software project.
+
+
+Happy Hacking,
+
+ Your libreCMC Project
+ http://librecmc.org
+ info@librecmc.org
+
+