{"id":13470576,"url":"https://github.com/contiki-os/contiki","last_synced_at":"2025-05-14T04:09:40.720Z","repository":{"id":5190442,"uuid":"6365284","full_name":"contiki-os/contiki","owner":"contiki-os","description":"The official git repository for Contiki, the open source OS for the Internet of Things","archived":false,"fork":false,"pushed_at":"2024-04-06T04:09:05.000Z","size":73109,"stargazers_count":3752,"open_issues_count":648,"forks_count":2580,"subscribers_count":423,"default_branch":"master","last_synced_at":"2025-04-10T22:35:10.928Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.contiki-os.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"linagora/hublin","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contiki-os.png","metadata":{"files":{"readme":"README-BUILDING.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-10-24T05:59:36.000Z","updated_at":"2025-04-10T09:32:05.000Z","dependencies_parsed_at":"2024-11-19T17:48:02.596Z","dependency_job_id":null,"html_url":"https://github.com/contiki-os/contiki","commit_stats":{"total_commits":10959,"total_committers":249,"mean_commits":44.01204819277108,"dds":0.8466100921616936,"last_synced_commit":"32b5b17f674232867c22916bb2e2534c8e9a92ff"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contiki-os%2Fcontiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contiki-os%2Fcontiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contiki-os%2Fcontiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contiki-os%2Fcontiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contiki-os","download_url":"https://codeload.github.com/contiki-os/contiki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254070107,"owners_count":22009559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:00:32.186Z","updated_at":"2025-05-14T04:09:35.706Z","avatar_url":"https://github.com/contiki-os.png","language":"C","funding_links":[],"categories":["C","Packages, Libraries and RTOSes","OSs","OS (操作系统)","Operating Systems","OS","Projects"],"sub_categories":["RTOS","底层开发库","OPC-UA","Low Level"],"readme":"The Contiki build system\n========================\n\nThe Contiki build system is designed to make it easy to compile Contiki\napplications for different hardware platforms or into a simulation platform by\nsimply supplying different parameters to the make command, without having to\nedit makefiles or modify the application code.\n\nThe file example project in examples/hello-world/ shows how the Contiki build\nsystem works. The hello-world.c application can be built into a complete\nContiki system by running make in the examples/hello-world/ directory. Running\nmake without parameters will build a Contiki system using the native target.\nThe native target is a special Contiki platform that builds an entire Contiki\nsystem as a program that runs on the development system. After compiling the\napplication for the native target it is possible to run the Contiki system with\nthe application by running the file hello-world.native. To compile the\napplication and a Contiki system for the ESB platform the command make\nTARGET=esb is used. This produces a hello-world.esb file that can be loaded\ninto an ESB board.\n\nTo compile the hello-world application into a stand-alone executable that can\nbe loaded into a running Contiki system, the command make hello-world.ce is\nused. To build an executable file for the ESB platform, make TARGET=esb\nhello-world.ce is run.\n\nTo avoid having to type TARGET= every time make is run, it is possible to run\nmake TARGET=esb savetarget to save the selected target as the default target\nplatform for subsequent invocations of make. A file called Makefile.target\ncontaining the currently saved target is saved in the project's directory.\n\nBeside TARGET= there's DEFINES= which allows to set arbitrary variables for the\nC preprocessor in form of a comma-separated list. Again it is possible to avoid\nhaving to re-type i.e. DEFINES=MYTRACE,MYVALUE=4711 by running make TARGET=esb\nDEFINES=MYTRACE,MYVALUE=4711 savedefines. A file called Makefile.esb.defines is\nsaved in the project's directory containing the currently saved defines for the\nESB platform.\n\nMakefiles used in the Contiki build system The Contiki build system is composed\nof a number of Makefiles. These are:\n\n* Makefile: the project's makefile, located in the project directory.\n\n* Makefile.include: the system-wide Contiki makefile, located in the root of\n  the Contiki source tree.\n\n* Makefile.$(TARGET) (where $(TARGET) is the name of the platform that is\n  currently being built): rules for the specific platform, located in the\n  platform's subdirectory in the platform/ directory.\n\n* Makefile.$(CPU) (where $(CPU) is the name of the CPU or microcontroller\n  architecture used on the platform for which Contiki is built): rules for the\n  CPU architecture, located in the CPU architecture's subdirectory in the cpu/\n  directory.\n\n* Makefile.$(APP) (where $(APP) is the name of an application in the apps/\n  directory): rules for applications in the apps/ directories. Each application\n  has its own makefile.\n\nThe Makefile in the project's directory is intentionally simple. It specifies\nwhere the Contiki source code resides in the system and includes the\nsystem-wide Makefile, Makefile.include. The project's makefile can also define\nin the APPS variable a list of applications from the apps/ directory that\nshould be included in the Contiki system. The Makefile used in the hello-world\nexample project looks like this:\n\n    CONTIKI_PROJECT = hello-world\n    all: $(CONTIKI_PROJECT)\n\n    CONTIKI = ../..\n    include $(CONTIKI)/Makefile.include\n\nFirst, the location of the Contiki source code tree is given by defining the\nCONTIKI variable. Next, the name of the application is defined. Finally, the\nsystem-wide Makefile.include is included.\n\nThe Makefile.include contains definitions of the C files of the core Contiki\nsystem. Makefile.include always reside in the root of the Contiki source tree.\nWhen make is run, Makefile.include includes the Makefile.$(TARGET) as well as\nall makefiles for the applications in the APPS list (which is specified by the\nproject's Makefile).\n\nMakefile.$(TARGET), which is located in the platform/$(TARGET)/ directory,\ncontains the list of C files that the platform adds to the Contiki system. This\nlist is defined by the CONTIKI_TARGET_SOURCEFILES variable. The\nMakefile.$(TARGET) also includes the Makefile.$(CPU) from the cpu/$(CPU)/\ndirectory.\n\nThe Makefile.$(CPU) typically contains definitions for the C compiler used for\nthe particular CPU. If multiple C compilers are used, the Makefile.$(CPU) can\neither contain a conditional expression that allows different C compilers to be\ndefined, or it can be completely overridden by the platform specific makefile\nMakefile.$(TARGET).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontiki-os%2Fcontiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontiki-os%2Fcontiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontiki-os%2Fcontiki/lists"}