Merge branch 'release/2.0.0' into main
43
.github/CONTRIBUTORS.md
vendored
@@ -1,16 +1,43 @@
|
||||
# Special thanks to all contributors for their awesome help in this project
|
||||
## Inkycal core development
|
||||
| username | Name | Contribution details |
|
||||
| --- | --- | --- |
|
||||
| **mgfcf** | [Max G.](https://github.com/mgfcf) | for first refactoring of inkycal-software |
|
||||
| **Atrejoe**| [Robert Sirre](https://github.com/Atrejoe)| for various suggestions, help with refacotring, implementing gitflow and a lot more...|
|
||||
| **vitasam** | [vitasam](https://github.com/vitasam)| for help with refactoring, code improvements, modularity and a lot more... |
|
||||
|
||||
## Main software (E-Paper.py)
|
||||
## BETA testers
|
||||
The following people have voluteered to test the beta release (pre-release). Thank you all very much for your suggestions, improvements, critics, feedback, time and commitment for Inkycal.
|
||||
|
||||
| username | Link |
|
||||
| --- | --- |
|
||||
| **emilyboda** | [emilyboda](https://github.com/emilyboda)|
|
||||
| **worstface** | [worstface](https://github.com/worstface)|
|
||||
| **Atrejoe**| [Robert Sirre](https://github.com/Atrejoe)|
|
||||
| **vitasam** | [vitasam](https://github.com/vitasam)|
|
||||
| **Crickus** | [Dimka](https://github.com/Crickus) |
|
||||
| **Vilhelm**| [VilhelmR](https://github.com/VilhelmR) |
|
||||
| **Pharao** | [Pharao]() |
|
||||
| **Obraik** | [Obraik]() |
|
||||
| **Ribitsch** | [Ribitsch](https://github.com/Ribitsch)|
|
||||
|
||||
## 3rd party Modules
|
||||
| username | Name | Contribution details |
|
||||
| --- | --- | --- |
|
||||
| **efredericks** | [Erik Fredericks](https://github.com/efredericks) | for adding Jokes module |
|
||||
| **worstface** | [worstface](https://github.com/worstface)| for adding Stocks module |
|
||||
|
||||
## Special help
|
||||
| username | Name | Contribution details |
|
||||
| --- | --- | --- |
|
||||
| **StevenSeifried** | [Steven Seifried](https://github.com/StevenSeifried) | for German translations and other PRs) |
|
||||
| **tobychui** | [Toby Chui](https://github.com/tobychui) | for the settings.py online generator and chinese/taiwanese translations) |
|
||||
| **tobychui** | [Toby Chui](https://github.com/tobychui) | for initial settings web-ui and chinese/taiwanese translations) |
|
||||
| **surak** | [Alexandre Strube](https://github.com/surak) | for various suggestions, PRs |
|
||||
| **Hubert** | Hubert |for extending the events fetcher, adding support for recurring events, date formattings and other code suggestions|
|
||||
| **mgfcf** | [Max G.](https://github.com/mgfcf) | for refactoring the entire E-Paper software |
|
||||
| **Crickus** | [Dimka](https://github.com/Crickus) | For helping with adding support for 9.7" E-Paper display|
|
||||
|
||||
# Debugging
|
||||
| username | Name | Contribution details |
|
||||
| --- | --- | --- |
|
||||
Coming soon
|
||||
## Financial Contributions
|
||||
| Name | Contribution details |
|
||||
| --- | --- |
|
||||
| **Kevin** | A special thank you for contribution! :tada: |
|
||||
| **Eric** | A special thank you for contribution! :tada: |
|
||||
| **Thomas** | A special thank you for contribution! :tada: |
|
||||
|
29
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
name: Python application
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python 3.7
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: 3.7
|
||||
|
||||
- name: Clone repo
|
||||
run: |
|
||||
git clone -b release/2.0.0 https://github.com/aceisace/Inky-Calendar Inkycal
|
||||
|
||||
- name: Install dependencies and run
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
cd Inkycal
|
||||
pip3 install -e ./
|
||||
cd inkycal/modules && ls -al
|
||||
cd ..
|
||||
cd tests
|
||||
for f in *.py; do python3 "$f"; done
|
17
.gitignore
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
*.pyc
|
||||
__pycache__/
|
||||
_build
|
||||
_static
|
||||
_templates
|
||||
|
||||
# virtual environment files
|
||||
bin/
|
||||
lib/
|
||||
share/
|
||||
lib64
|
||||
pyvenv.cfg
|
||||
*.m4
|
||||
*.h
|
||||
*.guess
|
||||
*.log
|
||||
*.in
|
@@ -172,7 +172,7 @@ The order is from latest to oldest and structured in the following way:
|
||||
|
||||
### Changed
|
||||
* Combined the software for the 2-colour and 3-Colour version
|
||||
* Split the main script into a settings file and the main programm itself.
|
||||
* Split the main script into a settings file and the main program itself.
|
||||
|
||||
## [1.2] Early October 2018
|
||||
|
||||
|
Before Width: | Height: | Size: 64 KiB |
BIN
Gallery/coffee.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
Gallery/logo.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
Gallery/wiki/frame holder.png
Normal file
After Width: | Height: | Size: 246 KiB |
BIN
Gallery/wiki/sleeve.png
Normal file
After Width: | Height: | Size: 342 KiB |
BIN
Gallery/wiki/surak-inkycal.jpg
Normal file
After Width: | Height: | Size: 429 KiB |
BIN
Gallery/wiki/vilhelm-inkycal.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
Gallery/wiki/vitali_inkycal_1.jpg
Normal file
After Width: | Height: | Size: 311 KiB |
BIN
Gallery/wiki/vitali_inkycal_2.jpg
Normal file
After Width: | Height: | Size: 217 KiB |
173
Installer.sh
@@ -1,173 +0,0 @@
|
||||
#!/bin/bash
|
||||
# E-Paper-Calendar software installer for Raspberry Pi running Debian 10 (a.k.a. Buster) with Desktop
|
||||
# Version: 1.7.2 (Mid Feb 2020)
|
||||
|
||||
echo -e "\e[1mPlease select an option from below:"
|
||||
echo -e "\e[97mEnter \e[91m[1]\e[97m to update Inky-Calendar software" #Option 1 : UPDATE
|
||||
echo -e "\e[97mEnter \e[91m[2]\e[97m to install Inky-Calendar software" #Option 2 : INSTALL
|
||||
echo -e "\e[97mEnter \e[91m[3]\e[97m to uninstall Inky-Calendar software" #Option 3 : UNINSTALL
|
||||
echo -e "\e[97mConfirm your selection with [ENTER]"
|
||||
read -r -p 'Waiting for input... ' option
|
||||
|
||||
# Invalid number selected, abort
|
||||
if [ "$option" != 1 ] && [ "$option" != 2 ] && [ "$option" != 3 ]; then echo -e "invalid number, aborting now" exit
|
||||
fi
|
||||
|
||||
# No option selected, abort
|
||||
if [ -z "$option" ]; then echo -e "You didn't enter anything, aborting now." exit
|
||||
fi
|
||||
|
||||
# What to do when uninstalling software
|
||||
if [ "$option" = 3 ]; then
|
||||
|
||||
# Remove requirements of software
|
||||
echo -e "\e[1;36m"Removing requirements for Inky-Calendar software"\e[0m"
|
||||
cd /home/"$USER"/Inky-Calendar && pip3 uninstall -r requirements.txt && sudo apt-get clean && sudo apt-get autoremove -y
|
||||
|
||||
# Remove configuration file for supervisor if it exists
|
||||
if [ -e /etc/supervisor/conf.d/inkycal.conf ]; then sudo rm /etc/supervisor/conf.d/inkycal.conf
|
||||
fi
|
||||
|
||||
# Print message that libraries have been uninstalled now
|
||||
echo -e "\e[1;36m"The libraries have been removed successfully"\e[0m"
|
||||
sleep 2
|
||||
|
||||
# Remove the Inky-Calendar directory if it exists
|
||||
echo -e "Removing the Inky-Calendar folder if it exists"
|
||||
if [ -d "/home/$USER/Inky-Calendar" ]; then
|
||||
sudo rm -r /home/"$USER"/Inky-Calendar/
|
||||
echo -e "\e[1;36m"Found Inky-Calendar folder and deleted it"\e[0m"
|
||||
fi
|
||||
echo -e "\e[1;36m"All done!"\e[0m"
|
||||
fi
|
||||
|
||||
if [ "$option" = 1 ]; then # UPDATE software
|
||||
echo -e "\e[1;36m"Checking if the Inky-Calendar folder exists..."\e[0m"
|
||||
if [ -d "/home/$USER/Inky-Calendar" ]; then
|
||||
echo -e "Found Inky-Calendar directory in /home/$USER"
|
||||
sleep 2
|
||||
echo -e "To prevent overwriting the Inky-Calendar folder, the installer will not continue."
|
||||
echo -e "Please rename the Inky-Calendar folder and then re-run the installer"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$option" = 1 ] || [ "$option" = 2 ]; then # This happens when installing or updating
|
||||
# Ask to update system
|
||||
echo -e "\e[1;36m"Would you like to update and upgrade the operating system first?"\e[0m"
|
||||
sleep 1
|
||||
echo -e "\e[97mIt is not scrictly required, but highly recommended."
|
||||
sleep 1
|
||||
echo -e "\e[97mPlease note that updating may take quite some time, in rare cases up to 1 hour."
|
||||
sleep 1
|
||||
echo -e "\e[97mPlease type [y] for yes or [n] for no and confirm your selection with [ENTER]"
|
||||
read -r -p 'Waiting for input... ' update
|
||||
|
||||
if [ "$update" != Y ] && [ "$update" != y ] && [ "$update" != N ] && [ "$update" != n ]; then echo -e "invalid input, aborting now" exit
|
||||
fi
|
||||
|
||||
if [ -z "$update" ]; then echo -e "You didn't enter anything, aborting now." exit
|
||||
fi
|
||||
|
||||
if [ "$update" = Y ] || [ "$update" = y ]; then
|
||||
# Updating and upgrading the system, without taking too much space
|
||||
echo -e "\e[1;36m"Running apt-get update and apt-get dist-upgrade for you..."\e[0m"
|
||||
sleep 1
|
||||
echo -e "\e[1;36m"This will take a while, sometimes up to 1 hour"\e[0m"
|
||||
sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get clean
|
||||
echo -e "\e[1;36m"System successfully updated and upgraded!"\e[0m"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Cloning Inky-Calendar repo
|
||||
echo -e "\e[1;36m"Cloning Inky-Calendar repo from Github"\e[0m"
|
||||
cd /home/"$USER" && git clone https://github.com/aceisace/Inky-Calendar
|
||||
|
||||
# Installing dependencies
|
||||
echo -e "\e[1;36m"Installing requirements for Inky-Calendar software"\e[0m"
|
||||
cd /home/"$USER"/Inky-Calendar && pip3 install -r requirements.txt
|
||||
|
||||
# Create symlinks of settings and configuration file
|
||||
ln -s /home/"$USER"/Inky-Calendar/settings/settings.py /home/"$USER"/Inky-Calendar/modules/
|
||||
ln -s /home/"$USER"/Inky-Calendar/settings/configuration.py /home/"$USER"/Inky-Calendar/modules/
|
||||
echo ""
|
||||
|
||||
echo -e "\e[97mDo you want the software to start automatically at boot?"
|
||||
echo -e "\e[97mPress [Y] for yes or [N] for no. The default option is yes"
|
||||
echo -e "\e[97mConfirm your selection with [ENTER]"
|
||||
read -r -p 'Waiting for input... ' autostart
|
||||
|
||||
if [ "$autostart" != Y ] && [ "$autostart" != y ] && [ "$autostart" != N ] && [ "$autostart" != n ]; then echo -e "invalid input, aborting now" exit
|
||||
fi
|
||||
|
||||
if [ -z "$autostart" ] || [ "$autostart" = Y ] || [ "$autostart" = y ]; then
|
||||
# Setting up supervisor
|
||||
echo -e "\e[1;36m"Setting up auto-start of script at boot"\e[0m"
|
||||
sudo apt-get install supervisor -y
|
||||
|
||||
sudo bash -c 'cat > /etc/supervisor/conf.d/inkycal.conf' << EOF
|
||||
[program:Inky-Calendar]
|
||||
command = /usr/bin/python3 /home/$USER/Inky-Calendar/modules/inkycal.py
|
||||
stdout_logfile = /home/$USER/Inky-Calendar/logs/logfile.log
|
||||
stdout_logfile_maxbytes = 5MB
|
||||
stderr_logfile = /home/$USER/Inky-Calendar/logs/errors.log
|
||||
stderr_logfile_maxbytes = 5MB
|
||||
user = $USER
|
||||
startsecs = 30
|
||||
EOF
|
||||
|
||||
sudo service supervisor reload && sudo service supervisor start Inky-Calendar
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Final words
|
||||
echo -e "\e[1;36m"The install was successful."\e[0m"
|
||||
sleep 2
|
||||
echo -e "\e[1;31m"You can now add your personal details in the settings file"\e[0m"
|
||||
echo -e "\e[1;31m"located in Inky-Calendar/settings/settings.py"\e[0m"
|
||||
sleep 2
|
||||
|
||||
echo -e "\e[97mIf you want to add your details now, selet an option from below"
|
||||
echo -e "\e[97mType [1] to open the settings-web-UI (user-fiendly)"
|
||||
echo -e "\e[97mType [2] to open settings file with nano (can be run on SSH)"
|
||||
echo -e "\e[97mType [3] to open settings file with python3 (can be run on SSH)"
|
||||
echo -e "\e[97mLeave empty to skip this step"
|
||||
echo -e "\e[97mConfirm your selection with [ENTER]"
|
||||
read -r -p 'Waiting for input... ' settings
|
||||
|
||||
# Invalid number selected, abort
|
||||
if [ "$settings" != 1 ] && [ "$settings" != 2 ] && [ "$settings" != 3 ]; then echo -e "invalid number, skipping.."
|
||||
fi
|
||||
|
||||
# No option selected, abort
|
||||
if [ -z "$settings" ]; then echo -e "You didn't enter anything, skipping.."
|
||||
fi
|
||||
|
||||
# What to do when uninstalling software
|
||||
if [ "$settings" = 1 ]; then
|
||||
echo -e "\e[1;36m"Add your details, click on generate, keep the file and close the browser"\e[0m"
|
||||
sleep 5
|
||||
chromium-browser /home/"$USER"/Inky-Calendar/settings/settings-UI.html
|
||||
echo -e "\e[97mHave you added your details and clicked on 'Generate'?"
|
||||
echo -e "\e[97mPress [Y] for yes."
|
||||
read -r -p 'Waiting for input... ' complete
|
||||
if [ -z "$complete" ] || [ "$complete" = Y ] || [ "$complete" = y ]; then
|
||||
echo -e "\e[1;36m"Moving settings file to /home/"$USER"/Inky-Calendar/settings/"\e[0m"
|
||||
if [ -e /etc/supervisor/conf.d/inkycal.conf ]; then mv /home/"$USER"/Downloads/settings.py /home/"$USER"/Inky-Calendar/settings/
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$settings" = 2 ]; then
|
||||
echo -e "\e[1;36m"Opening settings file with nano"\e[0m"
|
||||
nano /home/"$USER"/Inky-Calendar/settings/settings.py
|
||||
fi
|
||||
|
||||
if [ "$settings" = 3 ]; then
|
||||
echo -e "\e[1;36m"Opening settings file with python3"\e[0m"
|
||||
python3 /home/"$USER"/Inky-Calendar/settings/settings.py
|
||||
fi
|
||||
|
||||
echo -e "\e[1;36m"You can test if the programm works by running:"\e[0m"
|
||||
echo -e "\e[1;36m"python3 /home/"$USER"/Inky-Calendar/modules/inkycal.py"\e[0m"
|
||||
fi
|
129
README.md
@@ -1,16 +1,21 @@
|
||||
# Welcome to inkycal v2.0.0!
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/aceisace/Inky-Calendar/blob/main/Gallery/Inky-Calendar-logo.png" width="800">
|
||||
<img src="https://github.com/aceisace/Inkycal/blob/development/Gallery/logo.png" width="800">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
|
||||
[](https://github.com/aceisace/Inky-Calendar/releases)
|
||||
[](https://img.shields.io/pypi/pyversions/pyowm.svg)
|
||||
[](https://github.com/aceisace/Inky-Calendar/blob/Stable/LICENSE)
|
||||
[](https://www.paypal.me/SaadNaseer)
|
||||
<a href="https://www.paypal.me/SaadNaseer" alt="Donate"><img src="https://img.shields.io/badge/Donate-PayPal-green.svg" /></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/actions"><img src="https://github.com/aceisace/Inkycal/workflows/Python%20application/badge.svg"></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/releases" alt="Version"><img src="https://img.shields.io/github/release/aceisace/Inkycal.svg" /></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/blob/Stable/LICENSE" alt="Licence"><img src="https://img.shields.io/github/license/aceisace/Inkycal.svg" /></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/aceisace/Inkycal"></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/aceisace/Inkycal?color=green"></a>
|
||||
<a href="https://github.com/aceisace/Inkycal/network"><img alt="GitHub forks" src="https://img.shields.io/github/forks/aceisace/Inkycal?color=green"></a>
|
||||
<a href="https://github.com/aceisace/Inkycal"><img alt="python" src="https://img.shields.io/badge/python-%3E3.5-lightgrey"></a>
|
||||
</p>
|
||||
|
||||
A python3 software for displaying events (from iCalendars), weather (from openweathermap) and RSS feeds on selected E-Paper displays (4.2", 5.83", 7.5"(v1), 7.5"(v2)) from Waveshare/GoodDisplay.
|
||||
Inykcal is a software written in python for selected E-Paper displays. It converts these displays into useful information dashboards. It's open-source, free for personal use, fully modular and user-friendly. Despite all this, Inkycal can run well even on the Raspberry Pi 0. Oh, and it's open for third-party modules! Hooray!
|
||||
|
||||
## Main features
|
||||
* Monthly Calendar that shows events from your Google (or other) iCalendar/s
|
||||
@@ -19,34 +24,35 @@ A python3 software for displaying events (from iCalendars), weather (from openwe
|
||||
* RSS feeds from various providers to keep up to date with news, quotes etc.
|
||||
|
||||
## News:
|
||||
* **Looking for a 3D-printable IKEA frame mount? [Check this out](https://www.thingiverse.com/thing:4159363) (Credit to Ribitsch)**
|
||||
* **Looking for a server-only solution? [This repo offers a server-only solution](https://github.com/Atrejoe/Inky-Calendar-Server) (Credit to Atrejoe)**
|
||||
* **Discord chat open now. [Click here to enter](https://discord.gg/4YWdkVT)**
|
||||
* **Version 1.7.1 released with support for 4.2", 5.83", 7.5" (v1) and 7.5" (v2) E-Paper displays** (Mid January 2020)
|
||||
* **Added support for Debian Buster, Buster Lite is not supported!**
|
||||
* **Added a user-friendly Web-UI for adding details to the programm (Credit to TobyChui for the template)**
|
||||
* **New Inkycal release published (early December 2020)**
|
||||
* **Added support for all 4.2", 5.83", 7.5", 9.7" waveshare E-Paper displays**
|
||||
* **Discord chat open now. [Click here to enter](https://discord.gg/sHYKeSM)**
|
||||
|
||||
## Development status
|
||||
This software is in active development. To see the current development status, [[Click here]](https://github.com/aceisace/Inky-Calendar/projects/2).
|
||||
This software is in active development. To see the current development status, [[Click here]](https://github.com/aceisace/Inkycal/projects/2).
|
||||
|
||||
## Preview
|
||||
<p align="center">
|
||||
<img src="https://github.com/aceisace/Inky-Calendar/blob/main/Gallery/inkycal-modes.gif" width="900"><img
|
||||
<img src="https://github.com/aceisace/Inkycal/blob/development/Gallery/inkycal-modes.gif" width="900"><img
|
||||
</p>
|
||||
|
||||
## Hardware required
|
||||
* 7.5" 3-Colour E-Paper Display (Black, White, Red/Yellow) with driver hat from [waveshare](https://www.waveshare.com/product/7.5inch-e-paper-hat-b.htm)
|
||||
**or**
|
||||
* 7.5" 2-Colour E-Paper Display (Black, White) with driver hat from [waveshare](https://www.waveshare.com/product/7.5inch-e-paper-hat.htm)
|
||||
* Raspberry Pi Zero WH (with headers) (no soldering iron required)
|
||||
* Or: Raspberry Pi Zero W. In this case, you'll need to solder 2x20 pin GPIO headers yourself
|
||||
* MicroSD card (min. 4GB)
|
||||
* One of the supported ePaper displays from waveshare: 4.2", 5.83", 7.5" (all variants), 9.7"
|
||||
* Any Raspberry Pi with 40 pins and WiFi. (Raspberry Pi 3/3B/3B+/3A/4/0W/0WH - Inkycal runs just fine on the Zero W/Zweo WH model!)
|
||||
* MicroSD card (min. 4GB) for flashing Raspberry Pi OS **with Desktop**. **Lite is not supported!**
|
||||
* MicroUSB cable (for power)
|
||||
* Something to be used as a case (e.g. a RIBBA photo-frame or a 3D-printed case)
|
||||
* Optional, a [3D-printable case](https://github.com/aceisace/Inkycal/wiki/3D-printable-files)
|
||||
|
||||
# Setup
|
||||
## Getting the Raspberry Pi Zero W ready
|
||||
1. After [flashing Raspberry Pi OS (with Desktop)](https://www.raspberrypi.org/software/), set up Wifi on the Raspberry Pi Zero W by copying the file [**wpa_supplicant.conf**](https://github.com/aceisace/Inky-Calendar/blob/installer/wpa_supplicant.conf) (from above) to the /boot directory and adding your Wifi details in that file.
|
||||
# Installing Inkycal
|
||||
|
||||
## Configuring the Raspberry Pi
|
||||
1. Flash Raspberry Pi OS according to the [instructions](https://www.raspberrypi.org/software/)
|
||||
2. Create a settings file for Inkycal from the [WEB-UI](https://aceisace.eu.pythonanywhere.com/inkycal-config-v2-0-0)
|
||||
3. Copy the generated settings.json file to the flashed SD card.
|
||||
4.
|
||||
|
||||
## Getting the Raspberry Pi ready
|
||||
1. Flash Raspberry Pi OS according to the instructions ([instructions](https://www.raspberrypi.org/software/))
|
||||
2. Create a simple text document named **ssh** in the boot directory to enable ssh.
|
||||
3. Install the SD card and boot your Raspberry Pi. Connect to it over the network with ssh and login.
|
||||
3. Expand the filesystem in the Terminal with **`sudo raspi-config --expand-rootfs`**
|
||||
@@ -56,53 +62,52 @@ This software is in active development. To see the current development status, [
|
||||
7. Optional: If you want to disable the on-board leds of the Raspberry, follow these instructions:
|
||||
**[Disable on-board-led](https://www.jeffgeerling.com/blogs/jeff-geerling/controlling-pwr-act-leds-raspberry-pi)**
|
||||
|
||||
## Installing required packages for python 3.x
|
||||
Execute the following command in the Terminal to install all required packages. Please use Raspbian Buster with Desktop (preferably the latest version). Raspbian Buster **LITE** is not supported.
|
||||
### Installation
|
||||
```bash
|
||||
# clone the Inkycal repo
|
||||
git clone -b release/2.0.0 https://github.com/aceisace/Inkycal
|
||||
|
||||
**`bash -c "$(curl -sL https://raw.githubusercontent.com/aceisace/Inky-Calendar/main/Installer.sh)"`**
|
||||
# go to Inkycal directory
|
||||
cd Inkycal
|
||||
|
||||
**Note**: If you were using a previous version, please use the web-ui for generating a new settings file. Settings files from previous versions are not compatible.
|
||||
# install Inkycal
|
||||
pip3 install -e ./
|
||||
```
|
||||
|
||||
### Running Inkycal
|
||||
Open `Python3` and run the commands below or paste the below content in an empty file and save it as a `.py` file:
|
||||
```python3
|
||||
from inkycal import Inkycal # Import Inkycal
|
||||
|
||||
If you get some red lines, please run `pip3 install Pillow==6.2.0`.
|
||||
inky = Inkycal(render = True) # Initialise Inkycal
|
||||
inky.test() # test if Inkycal can be run correctly, running this will show a bit of info for each module
|
||||
inky.run() # If there were no issues, you can run Inkycal nonstop
|
||||
```
|
||||
|
||||
If the installer is broken, please follow the instructions here [manual installation](https://github.com/aceisace/Inky-Calendar/wiki/Manual-installation)
|
||||
|
||||
If the Installer should fail for any reason, kindly open an issue and paste the error. Thanks.
|
||||
|
||||
**Preview of Installer:**
|
||||
<p align="center">
|
||||
<img src="https://github.com/aceisace/Inky-Calendar/blob/main/Gallery/Installer-gif.gif" width="700">
|
||||
</p>
|
||||
|
||||
## Adding details to the program
|
||||
When you run the installer, you can add details in the last step. For new-users, it is recommended to use the 'web-UI' option.
|
||||
|
||||
You can also manually edit the settings file like this: `nano /home/$USER/Inky-Calendar/settings/settings.py`
|
||||
|
||||
Once your details are added, run the software with: `python3 /home/$USER/Inky-Calendar/modules/inkycal.py`. If everything is working correctly, you'll see some lines being printed on the console (not red ones). Lastly, the E-Paper display will show a fresh image.
|
||||
|
||||
If you encounter any issues, please leave a comment in the issues or via email. Thanks in advance.
|
||||
|
||||
## iCalendar
|
||||
With the latest release (v1.7), most iCalendars (Google, Yahoo, etc.) will work without problems. With Google and Yahoo, recurring events are now supported as well. With the other iCalendar providers, testing has not been done.
|
||||
|
||||
Event names will be truncated until they fit in their allocated space/line. Try avoiding too long event names.
|
||||
|
||||
If you encounter errors related to your iCalendar, please feel free to report the error either by opening an issue or by sending a mail.
|
||||
|
||||
## Updating
|
||||
Before updating, re-name the current Inky-Calendar folder e.g. Inky-Calendar-old and then run the installer again (see above), choosing the **update** option.
|
||||
## Uninstalling Inkycal
|
||||
1) `pip3 uninstall inkycal`
|
||||
2) Remove the `Inkycal` folder
|
||||
|
||||
## Contributing
|
||||
All sorts of contributions are most welcome and appreciated. To start contributing, please follow the [Contribution Guidelines](https://github.com/aceisace/Inky-Calendar/blob/main/.github/CONTRIBUTING.md).
|
||||
All sorts of contributions are most welcome and appreciated. To start contributing, please follow the [Contribution Guidelines](https://github.com/aceisace/Inkycal/blob/development/CONTRIBUTING.md).
|
||||
|
||||
The average response time for issues, PRs and emails is usually 24 hours. In some cases, it might be longer.
|
||||
|
||||
### Don't forget to check out the Wiki. It contains all the information to understanding and customising the script.
|
||||
## Setting up VS Code Remote development in WSL
|
||||
In order to speed up development, most development tasks (apart from the actual rending to E-Ink display) can be developed on more powerful machines and in richer environments than running this on a Pi zero. In case of Windows PC the most convenient way is to use VS Code Remote development in Windows Subsystem for Linux (WSL), please follow [Tutorial](https://code.visualstudio.com/remote-tutorials/wsl/getting-started).
|
||||
|
||||
|
||||
**P.S:** Don't forget to star and/or watch the repo. For those who have done so already, thank you very much!
|
||||
|
||||
## Contact
|
||||
* Email: aceisace63@yahoo.com (average response time < 24 hours)
|
||||
* Discord: [Inky-Calendar chatroom](https://discord.gg/sHYKeSM)
|
||||
## Contact and Support
|
||||
<a href="https://discord.gg/sHYKeSM">
|
||||
<img src="https://discord.com/assets/fc0b01fe10a0b8c602fb0106d8189d9b.png" alt="Inkycal chatroom Discord" width=200>
|
||||
</a>
|
||||
|
||||
## Buy me a coffee please
|
||||
Yes please :). I do drink and like my coffee, especially when developing the inkycal software :)
|
||||
You can donate a coffee with this QR-code (Paypal):
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/aceisace/Inkycal/development/Gallery/coffee.png" width=250>
|
||||
</p>
|
||||
|
@@ -1,27 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script for updating the Inky-Calendar software. This will automatically
|
||||
# transfer the user's own details with the placeholders in the settings.py file
|
||||
|
||||
# To-do: Delete the old settings.py file after all operations are done
|
||||
|
||||
in="/home/pi/settings.py.old"
|
||||
out="/home/pi/Inky-Calendar/Calendar/settings.py"
|
||||
|
||||
# replace template iCalendar URLs with user-defined URLs
|
||||
sed -n -e "/^ical_urls/r $in" -i -e "/^ical_urls/d" $out
|
||||
sed -n -e "/^rss_feeds/r $in" -i -e "/^rss_feeds/d" $out
|
||||
sed -n -e "/^update_interval/r $in" -i -e "/^update_interval/d" $out
|
||||
sed -n -e "/^api_key/r $in" -i -e "/^api_key/d" $out
|
||||
sed -n -e "/^location/r $in" -i -e "/^location/d" $out
|
||||
sed -n -e "/^week_starts_on/r $in" -i -e "/^week_starts_on/d" $out
|
||||
sed -n -e "/^calibration_hours/r $in" -i -e "/^calibration_hours/d" $out
|
||||
sed -n -e "/^display_colours/r $in" -i -e "/^display_colours/d" $out
|
||||
sed -n -e "/^language/r $in" -i -e "/^language/d" $out
|
||||
sed -n -e "/^units/r $in" -i -e "/^units/d" $out
|
||||
sed -n -e "/^hours/r $in" -i -e "/^hours/d" $out
|
||||
sed -n -e "/^top_section/r $in" -i -e "/^top_section/d" $out
|
||||
sed -n -e "/^middle_section/r $in" -i -e "/^middle_section/d" $out
|
||||
sed -n -e "/^bottom_section/r $in" -i -e "/^bottom_section/d" $out
|
||||
|
||||
echo -e 'All operations done'
|
20
docs/Makefile
Normal file
@@ -0,0 +1,20 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = .
|
||||
BUILDDIR = _build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
31
docs/about.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# About Inkycal
|
||||
<img align="center" src="https://raw.githubusercontent.com/aceisace/Inky-Calendar/development/Gallery/logo.png" width="800">
|
||||
|
||||
Inkycal is a python3 software for selected E-Paper displays.
|
||||
It's open-source (non-commercially), fully modular, user friendly and even runs
|
||||
well even on the Raspberry Pi Zero. Inkycal even has a web-UI which takes
|
||||
care of adding your details! No more editing files, Yay :partying_face:
|
||||
|
||||
The main idea behind Inkycal was to create a dashboard that blends in well
|
||||
in it's environment and shows you all information without you having to look
|
||||
them up. Several built-in modules help you stay organised by:
|
||||
* providing the weather forecast for the full week or next few hours
|
||||
* getting the latest news from ATOM/RSS feeds
|
||||
* showing your iCalendar agenda, which may be syncronised with your phone
|
||||
* showing a monthly Calendar which may also show events synced with Google etc.
|
||||
* fetch some jokes form the web to help you smile :)
|
||||
|
||||
What's more? It's compatible with third party modules, if something is missing,
|
||||
you can write your own module and share it with the community.
|
||||
|
||||
Inkycal has a friendly and helpful community on Discord in case you're in
|
||||
a pinch setting up Inkycal. Noobs welcome too of course!
|
||||
|
||||
Inkycal is developed mainly by [aceisace](https://github.com/aceisace) - a
|
||||
university student and a few other developers in their free time.
|
||||
Open source means we work for nothing, but it doesn't mean we don't need
|
||||
anything. We invest a large amount of time, effort and coffee to develop
|
||||
Inkycal.
|
||||
|
||||
Please support Inkycal via a **[DONATION](https://www.paypal.me/SaadNaseer)**
|
||||
to help us keep this project alive. Thank You!
|
61
docs/conf.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file only contains a selection of the most common options. For a full
|
||||
# list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
master_doc = 'index'
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'inkycal'
|
||||
copyright = '2018-2020, Ace Isace'
|
||||
author = 'Ace Isace'
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = '2.0.0'
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = ['sphinx.ext.autodoc', 'sphinxemoji.sphinxemoji',
|
||||
'sphinx_rtd_theme', 'recommonmark']
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = "sphinx_rtd_theme" # html_theme = 'classic'
|
||||
|
||||
source_suffix = {
|
||||
'.rst': 'restructuredtext',
|
||||
'.txt': 'markdown',
|
||||
'.md': 'markdown',
|
||||
}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
# html_static_path = ['_static']
|
4
docs/dev_doc.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Developer documentation
|
||||
|
||||
This documentation is mainly for developers who wish to create a third party
|
||||
module
|
25
docs/index.rst
Normal file
@@ -0,0 +1,25 @@
|
||||
.. inkycal documentation master file, created by
|
||||
sphinx-quickstart on Tue May 5 16:23:29 2020.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Inkycal documentation
|
||||
======================
|
||||
.. image:: ../Gallery/logo.png
|
||||
:align: center
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
inkycal
|
||||
about
|
||||
quickstart
|
||||
dev_doc
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
25
docs/inkycal.rst
Normal file
@@ -0,0 +1,25 @@
|
||||
.. image:: ../Gallery/logo.png
|
||||
:align: center
|
||||
|
||||
Inkycal
|
||||
===========================
|
||||
.. automodule:: inkycal.main
|
||||
:members:
|
||||
|
||||
Display
|
||||
===========================
|
||||
.. automodule:: inkycal.display.display
|
||||
:members:
|
||||
|
||||
Custom functions
|
||||
===========================
|
||||
.. automodule:: inkycal.custom.functions
|
||||
:members:
|
||||
|
||||
Helper classes
|
||||
=================
|
||||
.. automodule:: inkycal.modules.ical_parser
|
||||
:members:
|
||||
|
||||
.. automodule:: inkycal.modules.inky_image
|
||||
:members:
|
35
docs/make.bat
Normal file
@@ -0,0 +1,35 @@
|
||||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=.
|
||||
set BUILDDIR=_build
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
|
||||
:end
|
||||
popd
|
20
docs/quickstart.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Quickstart
|
||||
<img align="center" src="https://raw.githubusercontent.com/aceisace/Inky-Calendar/development/Gallery/logo.png" width="800">
|
||||
|
||||
## Installing Inkycal
|
||||
|
||||
Install inkycal directly via the github repo:
|
||||
|
||||
```bash
|
||||
# clone the repo
|
||||
git clone -b release/2.0.0 https://github.com/aceisace/Inky-Calendar Inkycal
|
||||
|
||||
# go to downloaded repo folder
|
||||
cd Inkycal
|
||||
|
||||
# install Inkycal
|
||||
pip3 install -e ./
|
||||
```
|
||||
|
||||
## Creating settings file
|
||||
coming soon
|
202
fonts/NotoSansUI/LICENSE.txt
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
BIN
fonts/NotoSansUI/NotoSansUI-Bold.ttf
Normal file
BIN
fonts/NotoSansUI/NotoSansUI-BoldItalic.ttf
Normal file
BIN
fonts/NotoSansUI/NotoSansUI-Italic.ttf
Normal file
BIN
fonts/NotoSansUI/NotoSansUI-Regular.ttf
Normal file
32
images/merger.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from PIL import Image
|
||||
import numpy
|
||||
|
||||
image1_path = "/home/pi/Desktop/cal.png"
|
||||
image2_path = "/home/pi/Desktop/cal2.png"
|
||||
output_file = "/home/pi/Desktop/merged.png"
|
||||
|
||||
def merge(image1, image2, out_filename):
|
||||
"""Merge black pixels from image2 into image 1
|
||||
module_name = name of the module generating the image
|
||||
out_filename = what name to give to the finished file
|
||||
"""
|
||||
|
||||
im1_name, im2_name = image1_path, image2_path
|
||||
im1 = Image.open(im1_name).convert('RGBA')
|
||||
im2 = Image.open(im2_name).convert('RGBA')
|
||||
|
||||
def clear_white(img):
|
||||
"""Replace all white pixels from image with transparent pixels
|
||||
"""
|
||||
x = numpy.asarray(img.convert('RGBA')).copy()
|
||||
x[:, :, 3] = (255 * (x[:, :, :3] != 255).any(axis=2)).astype(numpy.uint8)
|
||||
return Image.fromarray(x)
|
||||
|
||||
im2 = clear_white(im2)
|
||||
im1.paste(im2, (0,0), im2)
|
||||
im1.save(out_filename+'.png', 'PNG')
|
||||
|
||||
merge(image1_path, image2_path, output_file)
|
||||
|
||||
|
||||
print('Done')
|
Before Width: | Height: | Size: 7.5 KiB |
17
inkycal/__init__.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Display class (for dirving E-Paper displays)
|
||||
from inkycal.display import Display
|
||||
|
||||
# Default modules
|
||||
import inkycal.modules.inkycal_agenda
|
||||
import inkycal.modules.inkycal_calendar
|
||||
import inkycal.modules.inkycal_weather
|
||||
import inkycal.modules.inkycal_feeds
|
||||
import inkycal.modules.inkycal_todoist
|
||||
import inkycal.modules.inkycal_image
|
||||
import inkycal.modules.inkycal_jokes
|
||||
import inkycal.modules.inkycal_slideshow
|
||||
# import inkycal.modules.inkycal_server
|
||||
|
||||
# Main file
|
||||
from inkycal.main import Inkycal
|
||||
import inkycal.modules.inkycal_stocks
|
1
inkycal/custom/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .functions import *
|
314
inkycal/custom/functions.py
Normal file
@@ -0,0 +1,314 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Inky-Calendar custom-functions for ease-of-use
|
||||
|
||||
Copyright by aceisace
|
||||
"""
|
||||
import logging
|
||||
from PIL import Image, ImageDraw, ImageFont, ImageColor
|
||||
from urllib.request import urlopen
|
||||
import os
|
||||
import time
|
||||
|
||||
logs = logging.getLogger('inkycal_custom')
|
||||
logs.setLevel(level=logging.INFO)
|
||||
|
||||
# Get the path to the Inkycal folder
|
||||
top_level = os.path.dirname(
|
||||
os.path.abspath(os.path.dirname(__file__))).split('/inkycal')[0]
|
||||
|
||||
# Get path of 'fonts' and 'images' folders within Inkycal folder
|
||||
fonts_location = top_level + '/fonts/'
|
||||
images = top_level + '/images/'
|
||||
|
||||
# Get available fonts within fonts folder
|
||||
fonts = {}
|
||||
|
||||
for path,dirs,files in os.walk(fonts_location):
|
||||
for filename in files:
|
||||
if filename.endswith('.otf'):
|
||||
name = filename.split('.otf')[0]
|
||||
fonts[name] = os.path.join(path, filename)
|
||||
|
||||
if filename.endswith('.ttf'):
|
||||
name = filename.split('.ttf')[0]
|
||||
fonts[name] = os.path.join(path, filename)
|
||||
|
||||
available_fonts = [key for key,values in fonts.items()]
|
||||
|
||||
def get_fonts():
|
||||
"""Print all available fonts by name.
|
||||
|
||||
Searches the /font folder in Inykcal and displays all fonts found in
|
||||
there.
|
||||
|
||||
Returns:
|
||||
printed output of all available fonts. To access a fontfile, use the
|
||||
fonts dictionary to access it.
|
||||
|
||||
>>> fonts['fontname']
|
||||
|
||||
To use a font, use the following sytax, where fontname is one of the
|
||||
printed fonts of this function:
|
||||
|
||||
>>> ImageFont.truetype(fonts['fontname'], size = 10)
|
||||
"""
|
||||
for fonts in available_fonts:
|
||||
print(fonts)
|
||||
|
||||
|
||||
def get_system_tz():
|
||||
"""Gets the system-timezone
|
||||
|
||||
Gets the timezone set by the system.
|
||||
|
||||
Returns:
|
||||
- A timezone if a system timezone was found.
|
||||
- None if no timezone was found.
|
||||
|
||||
The extracted timezone can be used to show the local time instead of UTC. e.g.
|
||||
|
||||
>>> import arrow
|
||||
>>> print(arrow.now()) # returns non-timezone-aware time
|
||||
>>> print(arrow.now(tz=get_system_tz()) # prints timezone aware time.
|
||||
"""
|
||||
try:
|
||||
local_tz = time.tzname[1]
|
||||
except:
|
||||
print('System timezone could not be parsed!')
|
||||
print('Please set timezone manually!. Setting timezone to None...')
|
||||
local_tz = None
|
||||
return local_tz
|
||||
|
||||
|
||||
def auto_fontsize(font, max_height):
|
||||
"""Scales a given font to 80% of max_height.
|
||||
|
||||
Gets the height of a font and scales it until 80% of the max_height
|
||||
is filled.
|
||||
|
||||
|
||||
Args:
|
||||
- font: A PIL Font object.
|
||||
- max_height: An integer representing the height to adjust the font to
|
||||
which the given font should be scaled to.
|
||||
|
||||
Returns:
|
||||
A PIL font object with modified height.
|
||||
"""
|
||||
|
||||
fontsize = font.getsize('hg')[1]
|
||||
while font.getsize('hg')[1] <= (max_height * 0.80):
|
||||
fontsize += 1
|
||||
font = ImageFont.truetype(font.path, fontsize)
|
||||
return font
|
||||
|
||||
|
||||
def write(image, xy, box_size, text, font=None, **kwargs):
|
||||
"""Writes text on a image.
|
||||
|
||||
Writes given text at given position on the specified image.
|
||||
|
||||
Args:
|
||||
- image: The image to draw this text on, usually im_black or im_colour.
|
||||
- xy: tuple-> (x,y) representing the x and y co-ordinate.
|
||||
- box_size: tuple -> (width, height) representing the size of the text box.
|
||||
- text: string, the actual text to add on the image.
|
||||
- font: A PIL Font object e.g.
|
||||
ImageFont.truetype(fonts['fontname'], size = 10).
|
||||
|
||||
Args: (optional)
|
||||
- alignment: alignment of the text, use 'center', 'left', 'right'.
|
||||
- autofit: bool (True/False). Automatically increases fontsize to fill in
|
||||
as much of the box-height as possible.
|
||||
- colour: black by default, do not change as it causes issues with rendering
|
||||
on e-Paper.
|
||||
- rotation: Rotate the text with the text-box by a given angle anti-clockwise.
|
||||
- fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
|
||||
maximum of 90% of the size of the full width of text-box.
|
||||
- fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
|
||||
maximum of 90% of the size of the full height of the text-box.
|
||||
"""
|
||||
allowed_kwargs = ['alignment', 'autofit', 'colour', 'rotation',
|
||||
'fill_width', 'fill_height']
|
||||
|
||||
# Validate kwargs
|
||||
for key, value in kwargs.items():
|
||||
if key not in allowed_kwargs:
|
||||
print('{0} does not exist'.format(key))
|
||||
|
||||
# Set kwargs if given, it not, use defaults
|
||||
alignment = kwargs['alignment'] if 'alignment' in kwargs else 'center'
|
||||
autofit = kwargs['autofit'] if 'autofit' in kwargs else False
|
||||
fill_width = kwargs['fill_width'] if 'fill_width' in kwargs else 1.0
|
||||
fill_height = kwargs['fill_height'] if 'fill_height' in kwargs else 0.8
|
||||
colour = kwargs['colour'] if 'colour' in kwargs else 'black'
|
||||
rotation = kwargs['rotation'] if 'rotation' in kwargs else None
|
||||
|
||||
x,y = xy
|
||||
box_width, box_height = box_size
|
||||
|
||||
# Increase fontsize to fit specified height and width of text box
|
||||
if (autofit == True) or (fill_width != 1.0) or (fill_height != 0.8):
|
||||
size = 8
|
||||
font = ImageFont.truetype(font.path, size)
|
||||
text_width, text_height = font.getsize(text)[0], font.getsize('hg')[1]
|
||||
while (text_width < int(box_width * fill_width) and
|
||||
text_height < int(box_height * fill_height)):
|
||||
size += 1
|
||||
font = ImageFont.truetype(font.path, size)
|
||||
text_width, text_height = font.getsize(text)[0], font.getsize('hg')[1]
|
||||
|
||||
text_width, text_height = font.getsize(text)[0], font.getsize('hg')[1]
|
||||
|
||||
|
||||
# Truncate text if text is too long so it can fit inside the box
|
||||
if (text_width, text_height) > (box_width, box_height):
|
||||
logs.debug(('truncating {}'.format(text)))
|
||||
while (text_width, text_height) > (box_width, box_height):
|
||||
text=text[0:-1]
|
||||
text_width, text_height = font.getsize(text)[0], font.getsize('hg')[1]
|
||||
logs.debug((text))
|
||||
|
||||
# Align text to desired position
|
||||
if alignment == "center" or None:
|
||||
x = int((box_width / 2) - (text_width / 2))
|
||||
elif alignment == 'left':
|
||||
x = 0
|
||||
elif alignment == 'right':
|
||||
x = int(box_width - text_width)
|
||||
|
||||
y = int((box_height / 2) - (text_height / 2))
|
||||
|
||||
# Draw the text in the text-box
|
||||
draw = ImageDraw.Draw(image)
|
||||
space = Image.new('RGBA', (box_width, box_height))
|
||||
ImageDraw.Draw(space).text((x, y), text, fill=colour, font=font)
|
||||
|
||||
# Uncomment following two lines, comment out above two lines to show
|
||||
# red text-box with white text (debugging purposes)
|
||||
|
||||
#space = Image.new('RGBA', (box_width, box_height), color= 'red')
|
||||
#ImageDraw.Draw(space).text((x, y), text, fill='white', font=font)
|
||||
|
||||
if rotation != None:
|
||||
space.rotate(rotation, expand = True)
|
||||
|
||||
# Update only region with text (add text with transparent background)
|
||||
image.paste(space, xy, space)
|
||||
|
||||
|
||||
def text_wrap(text, font=None, max_width = None):
|
||||
"""Splits a very long text into smaller parts
|
||||
|
||||
Splits a long text to smaller lines which can fit in a line with max_width.
|
||||
Uses a Font object for more accurate calculations.
|
||||
|
||||
Args:
|
||||
- font: A PIL font object which is used to calculate the size.
|
||||
- max_width: int-> a width in pixels defining the maximum width before
|
||||
splitting the text into the next chunk.
|
||||
|
||||
Returns:
|
||||
A list containing chunked strings of the full text.
|
||||
"""
|
||||
lines = []
|
||||
if font.getsize(text)[0] < max_width:
|
||||
lines.append(text)
|
||||
else:
|
||||
words = text.split(' ')
|
||||
i = 0
|
||||
while i < len(words):
|
||||
line = ''
|
||||
while i < len(words) and font.getsize(line + words[i])[0] <= max_width:
|
||||
line = line + words[i] + " "
|
||||
i += 1
|
||||
if not line:
|
||||
line = words[i]
|
||||
i += 1
|
||||
lines.append(line)
|
||||
return lines
|
||||
|
||||
|
||||
def internet_available():
|
||||
"""checks if the internet is available.
|
||||
|
||||
Attempts to connect to google.com with a timeout of 5 seconds to check
|
||||
if the network can be reached.
|
||||
|
||||
Returns:
|
||||
- True if connection could be established.
|
||||
- False if the internet could not be reached.
|
||||
|
||||
Returned output can be used to add a check for internet availability:
|
||||
|
||||
>>> if internet_available() == True:
|
||||
>>> #...do something that requires internet connectivity
|
||||
"""
|
||||
|
||||
try:
|
||||
urlopen('https://google.com',timeout=5)
|
||||
return True
|
||||
except URLError as err:
|
||||
return False
|
||||
|
||||
|
||||
def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1,0.1)):
|
||||
"""Draws a border at given coordinates.
|
||||
|
||||
Args:
|
||||
- image: The image on which the border should be drawn (usually im_black or
|
||||
im_colour.
|
||||
|
||||
- xy: Tuple representing the top-left corner of the border e.g. (32, 100)
|
||||
where 32 is the x co-ordinate and 100 is the y-coordinate.
|
||||
|
||||
- size: Size of the border as a tuple -> (width, height).
|
||||
|
||||
- radius: Radius of the corners, where 0 = plain rectangle, 5 = round corners.
|
||||
|
||||
- thickness: Thickness of the border in pixels.
|
||||
|
||||
- shrinkage: A tuple containing decimals presenting a percentage of shrinking
|
||||
-> (width_shrink_percentage, height_shrink_percentage).
|
||||
e.g. (0.1, 0.2) ~ shrinks the width of border by 10%, shrinks height of
|
||||
border by 20%
|
||||
"""
|
||||
|
||||
colour='black'
|
||||
|
||||
# size from function paramter
|
||||
width, height = int(size[0]*(1-shrinkage[0])), int(size[1]*(1-shrinkage[1]))
|
||||
|
||||
# shift cursor to move rectangle to center
|
||||
offset_x, offset_y = int((size[0] - width)/2), int((size[1]- height)/2)
|
||||
|
||||
x, y, diameter = xy[0]+offset_x, xy[1]+offset_y, radius*2
|
||||
# lenght of rectangle size
|
||||
a,b = (width - diameter), (height-diameter)
|
||||
|
||||
# Set coordinates for staright lines
|
||||
p1, p2 = (x+radius, y), (x+radius+a, y)
|
||||
p3, p4 = (x+width, y+radius), (x+width, y+radius+b)
|
||||
p5, p6 = (p2[0], y+height), (p1[0], y+height)
|
||||
p7, p8 = (x, p4[1]), (x,p3[1])
|
||||
if radius != 0:
|
||||
# Set coordinates for arcs
|
||||
c1, c2 = (x,y), (x+diameter, y+diameter)
|
||||
c3, c4 = ((x+width)-diameter, y), (x+width, y+diameter)
|
||||
c5, c6 = ((x+width)-diameter, (y+height)-diameter), (x+width, y+height)
|
||||
c7, c8 = (x, (y+height)-diameter), (x+diameter, y+height)
|
||||
|
||||
# Draw lines and arcs, creating a square with round corners
|
||||
draw = ImageDraw.Draw(image)
|
||||
draw.line( (p1, p2) , fill=colour, width = thickness)
|
||||
draw.line( (p3, p4) , fill=colour, width = thickness)
|
||||
draw.line( (p5, p6) , fill=colour, width = thickness)
|
||||
draw.line( (p7, p8) , fill=colour, width = thickness)
|
||||
|
||||
if radius != 0:
|
||||
draw.arc( (c1, c2) , 180, 270, fill=colour, width=thickness)
|
||||
draw.arc( (c3, c4) , 270, 360, fill=colour, width=thickness)
|
||||
draw.arc( (c5, c6) , 0, 90, fill=colour, width=thickness)
|
||||
draw.arc( (c7, c8) , 90, 180, fill=colour, width=thickness)
|
1
inkycal/display/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .display import Display
|
219
inkycal/display/display.py
Normal file
@@ -0,0 +1,219 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Inky-Calendar epaper functions
|
||||
Copyright by aceisace
|
||||
"""
|
||||
from importlib import import_module
|
||||
from PIL import Image
|
||||
|
||||
from inkycal.custom import top_level
|
||||
import glob
|
||||
|
||||
class Display:
|
||||
"""Display class for inkycal
|
||||
|
||||
Creates an instance of the driver for the selected E-Paper model and allows
|
||||
rendering images and calibrating the E-Paper display
|
||||
|
||||
args:
|
||||
- epaper_model: The name of your E-Paper model.
|
||||
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, epaper_model):
|
||||
"""Load the drivers for this epaper model"""
|
||||
|
||||
if 'colour' in epaper_model:
|
||||
self.supports_colour = True
|
||||
else:
|
||||
self.supports_colour = False
|
||||
|
||||
try:
|
||||
driver_path = f'inkycal.display.drivers.{epaper_model}'
|
||||
driver = import_module(driver_path)
|
||||
self._epaper = driver.EPD()
|
||||
self.model_name = epaper_model
|
||||
|
||||
except ImportError:
|
||||
raise Exception('This module is not supported. Check your spellings?')
|
||||
|
||||
except FileNotFoundError:
|
||||
raise Exception('SPI could not be found. Please check if SPI is enabled')
|
||||
|
||||
def render(self, im_black, im_colour = None):
|
||||
"""Renders an image on the selected E-Paper display.
|
||||
|
||||
Initlializes the E-Paper display, sends image data and executes command
|
||||
to update the display.
|
||||
|
||||
Args:
|
||||
- im_black: The image for the black-pixels. Anything in this image that is
|
||||
black is rendered as black on the display. This is required and ideally
|
||||
should be a black-white image.
|
||||
|
||||
- im_colour: For E-Paper displays supporting colour, a separate image,
|
||||
ideally black-white is required for the coloured pixels. Anything that is
|
||||
black in this image will show up as either red/yellow.
|
||||
|
||||
Rendering an image for black-white E-Paper displays:
|
||||
|
||||
>>> sample_image = PIL.Image.open('path/to/file.png')
|
||||
>>> display = Display('my_black_white_display')
|
||||
>>> display.render(sample_image)
|
||||
|
||||
|
||||
Rendering black-white on coloured E-Paper displays:
|
||||
|
||||
>>> sample_image = PIL.Image.open('path/to/file.png')
|
||||
>>> display = Display('my_coloured_display')
|
||||
>>> display.render(sample_image, sample_image)
|
||||
|
||||
|
||||
Rendering coloured image where 2 images are available:
|
||||
|
||||
>>> black_image = PIL.Image.open('path/to/file.png') # black pixels
|
||||
>>> colour_image = PIL.Image.open('path/to/file.png') # coloured pixels
|
||||
>>> display = Display('my_coloured_display')
|
||||
>>> display.render(black_image, colour_image)
|
||||
"""
|
||||
|
||||
epaper = self._epaper
|
||||
|
||||
if self.supports_colour == False:
|
||||
print('Initialising..', end = '')
|
||||
epaper.init()
|
||||
print('Updating display......', end = '')
|
||||
epaper.display(epaper.getbuffer(im_black))
|
||||
print('Done')
|
||||
|
||||
elif self.supports_colour == True:
|
||||
if not im_colour:
|
||||
raise Exception('im_colour is required for coloured epaper displays')
|
||||
print('Initialising..', end = '')
|
||||
epaper.init()
|
||||
print('Updating display......', end = '')
|
||||
epaper.display(epaper.getbuffer(im_black), epaper.getbuffer(im_colour))
|
||||
print('Done')
|
||||
|
||||
print('Sending E-Paper to deep sleep...', end = '')
|
||||
epaper.sleep()
|
||||
print('Done')
|
||||
|
||||
def calibrate(self, cycles=3):
|
||||
"""Calibrates the display to retain crisp colours
|
||||
|
||||
Flushes the selected display several times with it's supported colours,
|
||||
removing any previous effects of ghosting.
|
||||
|
||||
Args:
|
||||
- cycles: -> int. The number of times to flush the display with it's
|
||||
supported colours.
|
||||
|
||||
It's recommended to calibrate the display after every 6 display updates
|
||||
for best results. For black-white only displays, calibration is less
|
||||
critical, but not calibrating regularly results in grey-ish text.
|
||||
|
||||
Please note that calibration takes a while to complete. 3 cycles may
|
||||
take 10 mins on black-white E-Papers while it takes 20 minutes on coloured
|
||||
E-Paper displays.
|
||||
"""
|
||||
|
||||
epaper = self._epaper
|
||||
epaper.init()
|
||||
|
||||
display_size = self.get_display_size(self.model_name)
|
||||
|
||||
white = Image.new('1', display_size, 'white')
|
||||
black = Image.new('1', display_size, 'black')
|
||||
|
||||
print('----------Started calibration of ePaper display----------')
|
||||
if self.supports_colour == True:
|
||||
for _ in range(cycles):
|
||||
print('Calibrating...', end= ' ')
|
||||
print('black...', end= ' ')
|
||||
epaper.display(epaper.getbuffer(black), epaper.getbuffer(white))
|
||||
print('colour...', end = ' ')
|
||||
epaper.display(epaper.getbuffer(white), epaper.getbuffer(black))
|
||||
print('white...')
|
||||
epaper.display(epaper.getbuffer(white), epaper.getbuffer(white))
|
||||
print(f'Cycle {_+1} of {cycles} complete')
|
||||
|
||||
if self.supports_colour == False:
|
||||
for _ in range(cycles):
|
||||
print('Calibrating...', end= ' ')
|
||||
print('black...', end = ' ')
|
||||
epaper.display(epaper.getbuffer(black))
|
||||
print('white...')
|
||||
epaper.display(epaper.getbuffer(white)),
|
||||
print(f'Cycle {_+1} of {cycles} complete')
|
||||
|
||||
print('-----------Calibration complete----------')
|
||||
epaper.sleep()
|
||||
|
||||
|
||||
@classmethod
|
||||
def get_display_size(cls, model_name):
|
||||
"""Returns the size of the display as a tuple -> (width, height)
|
||||
|
||||
Looks inside drivers folder for the given model name, then returns it's
|
||||
size.
|
||||
|
||||
Args:
|
||||
- model_name: str -> The name of the E-Paper display to get it's size.
|
||||
|
||||
Returns:
|
||||
(width, height) ->tuple, showing the size of the display
|
||||
|
||||
You can use this function directly without creating the Display class:
|
||||
|
||||
>>> Display.get_display_size('model_name')
|
||||
"""
|
||||
if not isinstance(model_name, str):
|
||||
print('model_name should be a string')
|
||||
return
|
||||
else:
|
||||
driver_files = top_level+'/inkycal/display/drivers/*.py'
|
||||
drivers = glob.glob(driver_files)
|
||||
drivers = [i.split('/')[-1].split('.')[0] for i in drivers]
|
||||
drivers.remove('__init__')
|
||||
drivers.remove('epdconfig')
|
||||
if model_name not in drivers:
|
||||
print('This model name was not found. Please double check your spellings')
|
||||
return
|
||||
else:
|
||||
with open(top_level+'/inkycal/display/drivers/'+model_name+'.py') as file:
|
||||
for line in file:
|
||||
if 'EPD_WIDTH=' in line.replace(" ", ""):
|
||||
width = int(line.rstrip().replace(" ", "").split('=')[-1])
|
||||
if 'EPD_HEIGHT=' in line.replace(" ", ""):
|
||||
height = int(line.rstrip().replace(" ", "").split('=')[-1])
|
||||
return width, height
|
||||
|
||||
@classmethod
|
||||
def get_display_names(cls):
|
||||
"""Prints all supported E-Paper models.
|
||||
|
||||
Fetches all filenames in driver folder and prints them on the console.
|
||||
|
||||
Returns:
|
||||
Printed version of all supported Displays.
|
||||
|
||||
Use one of the models to intilialize the Display class in order to gain
|
||||
access to the E-Paper.
|
||||
|
||||
You can use this function directly without creating the Display class:
|
||||
|
||||
>>> Display.get_display_names()
|
||||
"""
|
||||
driver_files = top_level+'/inkycal/display/drivers/*.py'
|
||||
drivers = glob.glob(driver_files)
|
||||
drivers = [i.split('/')[-1].split('.')[0] for i in drivers]
|
||||
drivers.remove('__init__')
|
||||
drivers.remove('epdconfig')
|
||||
print(*drivers, sep='\n')
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Running Display class in standalone mode")
|
||||
|
58
inkycal/display/drivers/9_in_7.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
9.7" driver class
|
||||
Copyright by aceisace
|
||||
"""
|
||||
from inkycal.custom import images, top_level
|
||||
from subprocess import call, run
|
||||
from os import chdir
|
||||
from PIL import Image
|
||||
|
||||
# Display resolution
|
||||
EPD_WIDTH = 1200
|
||||
EPD_HEIGHT = 825
|
||||
|
||||
driver_dir = top_level+'/inkycal/display/drivers/9_in_7_drivers/'
|
||||
|
||||
class EPD:
|
||||
|
||||
def __init__(self):
|
||||
"""9.7" epaper class"""
|
||||
with open(driver_dir+'setup_state.txt', 'r') as file:
|
||||
setup_state = int(file.readline().rstrip())
|
||||
|
||||
if setup_state == 0:
|
||||
print('installing additional drivers...')
|
||||
self.setup()
|
||||
|
||||
def init(self):
|
||||
pass
|
||||
|
||||
def display(self, command):
|
||||
"""displays an image"""
|
||||
try:
|
||||
run_command = command.split()
|
||||
run(run_command)
|
||||
except:
|
||||
print("oops, something didn't work right :/")
|
||||
|
||||
def getbuffer(self, image):
|
||||
"""ad-hoc"""
|
||||
image = image.rotate(90, expand=True)
|
||||
image.convert('RGB').save(images+'canvas.bmp', 'BMP')
|
||||
command = 'sudo {}IT8951/IT8951 0 0 {}'.format(driver_dir, images+'canvas.bmp')
|
||||
#print(command)
|
||||
return command
|
||||
|
||||
def setup(self):
|
||||
"""Runs the required setup for 9.7" epaper displays"""
|
||||
run(["chmod", "+x", driver_dir+"install.sh"])
|
||||
call(driver_dir+"install.sh")
|
||||
|
||||
with open(driver_dir+'setup_state.txt', 'w') as file:
|
||||
file.write('1')
|
||||
|
||||
def sleep(self):
|
||||
pass
|
||||
|
201
inkycal/display/drivers/9_in_7_drivers/IT8951/AsciiLib.c
Normal file
@@ -0,0 +1,201 @@
|
||||
#include "AsciiLib.h"
|
||||
|
||||
static uint8_t const AsciiLib[95][16] = {
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
|
||||
|
||||
{0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00},/*"!",1*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
|
||||
|
||||
{0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00},/*"#",3*/
|
||||
|
||||
{0x00,0x18,0x18,0x3C,0x66,0x60,0x30,0x18,0x0C,0x06,0x66,0x3C,0x18,0x18,0x00,0x00},/*"$",4*/
|
||||
|
||||
{0x00,0x00,0x70,0xD8,0xDA,0x76,0x0C,0x18,0x30,0x6E,0x5B,0x1B,0x0E,0x00,0x00,0x00},/*"%",5*/
|
||||
|
||||
{0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x60,0x6F,0x66,0x66,0x3B,0x00,0x00,0x00,0x00},/*"&",6*/
|
||||
|
||||
{0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
|
||||
|
||||
{0x00,0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00},/*"(",8*/
|
||||
|
||||
{0x00,0x00,0x00,0x30,0x18,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x30,0x00,0x00},/*")",9*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x36,0x1C,0x7F,0x1C,0x36,0x00,0x00,0x00,0x00,0x00,0x00},/*"*",10*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00},/*"+",11*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00},/*",",12*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00},/*".",14*/
|
||||
|
||||
{0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00},/*"/",15*/
|
||||
|
||||
{0x00,0x00,0x00,0x1E,0x33,0x37,0x37,0x33,0x3B,0x3B,0x33,0x1E,0x00,0x00,0x00,0x00},/*"0",16*/
|
||||
|
||||
{0x00,0x00,0x00,0x0C,0x1C,0x7C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00},/*"1",17*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00},/*"2",18*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x1C,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"3",19*/
|
||||
|
||||
{0x00,0x00,0x00,0x30,0x30,0x36,0x36,0x36,0x66,0x7F,0x06,0x06,0x00,0x00,0x00,0x00},/*"4",20*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00},/*"5",21*/
|
||||
|
||||
{0x00,0x00,0x00,0x1C,0x18,0x30,0x7C,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"6",22*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x30,0x00,0x00,0x00,0x00},/*"7",23*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x76,0x3C,0x6E,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"8",24*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3E,0x0C,0x18,0x38,0x00,0x00,0x00,0x00},/*"9",25*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00},/*":",26*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00},/*";",27*/
|
||||
|
||||
{0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00},/*"<",28*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"=",29*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00},/*">",30*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x0C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00},/*"?",31*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0xC3,0xC3,0xCF,0xDB,0xDB,0xCF,0xC0,0x7F,0x00,0x00,0x00,0x00},/*"@",32*/
|
||||
|
||||
{0x00,0x00,0x00,0x18,0x3C,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"A",33*/
|
||||
|
||||
{0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},/*"B",34*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"C",35*/
|
||||
|
||||
{0x00,0x00,0x00,0x78,0x6C,0x66,0x66,0x66,0x66,0x66,0x6C,0x78,0x00,0x00,0x00,0x00},/*"D",36*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00},/*"E",37*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00},/*"F",38*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,0x6E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},/*"G",39*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"H",40*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00},/*"I",41*/
|
||||
|
||||
{0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"J",42*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x6C,0x6C,0x78,0x6C,0x6C,0x66,0x66,0x00,0x00,0x00,0x00},/*"K",43*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00},/*"L",44*/
|
||||
|
||||
{0x00,0x00,0x00,0x63,0x63,0x77,0x6B,0x6B,0x6B,0x63,0x63,0x63,0x00,0x00,0x00,0x00},/*"M",45*/
|
||||
|
||||
{0x00,0x00,0x00,0x63,0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00},/*"N",46*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"O",47*/
|
||||
|
||||
{0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00},/*"P",48*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x0C,0x06,0x00,0x00},/*"Q",49*/
|
||||
|
||||
{0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,0x6C,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"R",50*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x66,0x60,0x30,0x18,0x0C,0x06,0x66,0x3C,0x00,0x00,0x00,0x00},/*"S",51*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00},/*"T",52*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"U",53*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00},/*"V",54*/
|
||||
|
||||
{0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,0x6B,0x36,0x36,0x36,0x00,0x00,0x00,0x00},/*"W",55*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x34,0x18,0x18,0x2C,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"X",56*/
|
||||
|
||||
{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00},/*"Y",57*/
|
||||
|
||||
{0x00,0x00,0x00,0x7E,0x06,0x06,0x0C,0x18,0x30,0x60,0x60,0x7E,0x00,0x00,0x00,0x00},/*"Z",58*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00},/*"[",59*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x00,0x00,0x00},/*"\",60*/
|
||||
|
||||
{0x00,0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00},/*"]",61*/
|
||||
|
||||
{0x00,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00},/*"_",63*/
|
||||
|
||||
{0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",64*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3C,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},/*"a",65*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},/*"b",66*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x60,0x60,0x60,0x66,0x3C,0x00,0x00,0x00,0x00},/*"c",67*/
|
||||
|
||||
{0x00,0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},/*"d",68*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x7E,0x60,0x60,0x3C,0x00,0x00,0x00,0x00},/*"e",69*/
|
||||
|
||||
{0x00,0x00,0x00,0x1E,0x30,0x30,0x30,0x7E,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00},/*"f",70*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x7C,0x00},/*"g",71*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"h",72*/
|
||||
|
||||
{0x00,0x00,0x18,0x18,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00},/*"i",73*/
|
||||
|
||||
{0x00,0x00,0x0C,0x0C,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x78,0x00},/*"j",74*/
|
||||
|
||||
{0x00,0x00,0x00,0x60,0x60,0x66,0x66,0x6C,0x78,0x6C,0x66,0x66,0x00,0x00,0x00,0x00},/*"k",75*/
|
||||
|
||||
{0x00,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00},/*"l",76*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x7E,0x6B,0x6B,0x6B,0x6B,0x6B,0x63,0x00,0x00,0x00,0x00},/*"m",77*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},/*"n",78*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},/*"o",79*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x00},/*"p",80*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x00},/*"q",81*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x66,0x6E,0x70,0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00},/*"r",82*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x3E,0x60,0x60,0x3C,0x06,0x06,0x7C,0x00,0x00,0x00,0x00},/*"s",83*/
|
||||
|
||||
{0x00,0x00,0x00,0x30,0x30,0x7E,0x30,0x30,0x30,0x30,0x30,0x1E,0x00,0x00,0x00,0x00},/*"t",84*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},/*"u",85*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00},/*"v",86*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x63,0x6B,0x6B,0x6B,0x6B,0x36,0x36,0x00,0x00,0x00,0x00},/*"w",87*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00,0x00,0x00,0x00},/*"x",88*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x0C,0x18,0xF0,0x00},/*"y",89*/
|
||||
|
||||
{0x00,0x00,0x00,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00},/*"z",90*/
|
||||
|
||||
{0x00,0x00,0x00,0x0C,0x18,0x18,0x18,0x30,0x60,0x30,0x18,0x18,0x18,0x0C,0x00,0x00},/*"{",91*/
|
||||
|
||||
{0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00},/*"|",92*/
|
||||
|
||||
{0x00,0x00,0x00,0x30,0x18,0x18,0x18,0x0C,0x06,0x0C,0x18,0x18,0x18,0x30,0x00,0x00},/*"}",93*/
|
||||
|
||||
{0x00,0x00,0x00,0x71,0xDB,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
|
||||
};
|
||||
|
||||
void GetASCIICode(uint8_t* pBuffer,uint8_t ASCII)
|
||||
{
|
||||
memcpy(pBuffer,AsciiLib[(ASCII - 32)] ,16);
|
||||
}
|
||||
|
||||
|
||||
|
10
inkycal/display/drivers/9_in_7_drivers/IT8951/AsciiLib.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef __AsciiLib_H
|
||||
#define __AsciiLib_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
void GetASCIICode(uint8_t* pBuffer,uint8_t ASCII);
|
||||
|
||||
#endif
|
||||
|
BIN
inkycal/display/drivers/9_in_7_drivers/IT8951/IT8951
Normal file
897
inkycal/display/drivers/9_in_7_drivers/IT8951/IT8951.c
Normal file
@@ -0,0 +1,897 @@
|
||||
#include "IT8951.h"
|
||||
|
||||
/*
|
||||
extern IT8951DevInfo gstI80DevInfo;
|
||||
extern uint8_t* gpFrameBuf; //Host Source Frame buffer
|
||||
extern uint32_t gulImgBufAddr; //IT8951 Image buffer address
|
||||
*/
|
||||
|
||||
//Global varivale
|
||||
IT8951DevInfo gstI80DevInfo;
|
||||
uint8_t* gpFrameBuf; //Host Source Frame buffer
|
||||
uint32_t gulImgBufAddr; //IT8951 Image buffer address
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host controller function 1---Wait for host data Bus Ready
|
||||
//-----------------------------------------------------------
|
||||
void LCDWaitForReady()
|
||||
{
|
||||
uint8_t ulData = bcm2835_gpio_lev(HRDY);
|
||||
while(ulData == 0)
|
||||
{
|
||||
ulData = bcm2835_gpio_lev(HRDY);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host controller function 2---Write command code to host data Bus
|
||||
//-----------------------------------------------------------
|
||||
void LCDWriteCmdCode(uint16_t usCmdCode)
|
||||
{
|
||||
//Set Preamble for Write Command
|
||||
uint16_t wPreamble = 0x6000;
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_gpio_write(CS,LOW);
|
||||
|
||||
bcm2835_spi_transfer(wPreamble>>8);
|
||||
bcm2835_spi_transfer(wPreamble);
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_spi_transfer(usCmdCode>>8);
|
||||
bcm2835_spi_transfer(usCmdCode);
|
||||
|
||||
bcm2835_gpio_write(CS,HIGH);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host controller function 3---Write Data to host data Bus
|
||||
//-----------------------------------------------------------
|
||||
void LCDWriteData(uint16_t usData)
|
||||
{
|
||||
//Set Preamble for Write Data
|
||||
uint16_t wPreamble = 0x0000;
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_gpio_write(CS,LOW);
|
||||
|
||||
bcm2835_spi_transfer(wPreamble>>8);
|
||||
bcm2835_spi_transfer(wPreamble);
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_spi_transfer(usData>>8);
|
||||
bcm2835_spi_transfer(usData);
|
||||
|
||||
bcm2835_gpio_write(CS,HIGH);
|
||||
}
|
||||
|
||||
void LCDWriteNData(uint16_t* pwBuf, uint32_t ulSizeWordCnt)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
uint16_t wPreamble = 0x0000;
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_gpio_write(CS,LOW);
|
||||
|
||||
bcm2835_spi_transfer(wPreamble>>8);
|
||||
bcm2835_spi_transfer(wPreamble);
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
for(i=0;i<ulSizeWordCnt;i++)
|
||||
{
|
||||
bcm2835_spi_transfer(pwBuf[i]>>8);
|
||||
bcm2835_spi_transfer(pwBuf[i]);
|
||||
}
|
||||
|
||||
bcm2835_gpio_write(CS,HIGH);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host controller function 4---Read Data from host data Bus
|
||||
//-----------------------------------------------------------
|
||||
uint16_t LCDReadData()
|
||||
{
|
||||
uint16_t wRData;
|
||||
|
||||
uint16_t wPreamble = 0x1000;
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_gpio_write(CS,LOW);
|
||||
|
||||
bcm2835_spi_transfer(wPreamble>>8);
|
||||
bcm2835_spi_transfer(wPreamble);
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
wRData=bcm2835_spi_transfer(0x00);//dummy
|
||||
wRData=bcm2835_spi_transfer(0x00);//dummy
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
wRData = bcm2835_spi_transfer(0x00)<<8;
|
||||
wRData |= bcm2835_spi_transfer(0x00);
|
||||
|
||||
bcm2835_gpio_write(CS,HIGH);
|
||||
|
||||
return wRData;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Read Burst N words Data
|
||||
//-----------------------------------------------------------
|
||||
void LCDReadNData(uint16_t* pwBuf, uint32_t ulSizeWordCnt)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
uint16_t wPreamble = 0x1000;
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
bcm2835_gpio_write(CS,LOW);
|
||||
|
||||
bcm2835_spi_transfer(wPreamble>>8);
|
||||
bcm2835_spi_transfer(wPreamble);
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
pwBuf[0]=bcm2835_spi_transfer(0x00);//dummy
|
||||
pwBuf[0]=bcm2835_spi_transfer(0x00);//dummy
|
||||
|
||||
LCDWaitForReady();
|
||||
|
||||
for(i=0;i<ulSizeWordCnt;i++)
|
||||
{
|
||||
pwBuf[i] = bcm2835_spi_transfer(0x00)<<8;
|
||||
pwBuf[i] |= bcm2835_spi_transfer(0x00);
|
||||
}
|
||||
|
||||
bcm2835_gpio_write(CS,HIGH);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host controller function 5---Write command to host data Bus with aruments
|
||||
//-----------------------------------------------------------
|
||||
void LCDSendCmdArg(uint16_t usCmdCode,uint16_t* pArg, uint16_t usNumArg)
|
||||
{
|
||||
uint16_t i;
|
||||
//Send Cmd code
|
||||
LCDWriteCmdCode(usCmdCode);
|
||||
//Send Data
|
||||
for(i=0;i<usNumArg;i++)
|
||||
{
|
||||
LCDWriteData(pArg[i]);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 1---SYS_RUN
|
||||
//-----------------------------------------------------------
|
||||
void IT8951SystemRun()
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_SYS_RUN);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 2---STANDBY
|
||||
//-----------------------------------------------------------
|
||||
void IT8951StandBy()
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_STANDBY);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 3---SLEEP
|
||||
//-----------------------------------------------------------
|
||||
void IT8951Sleep()
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_SLEEP);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 4---REG_RD
|
||||
//-----------------------------------------------------------
|
||||
uint16_t IT8951ReadReg(uint16_t usRegAddr)
|
||||
{
|
||||
uint16_t usData;
|
||||
|
||||
//Send Cmd and Register Address
|
||||
LCDWriteCmdCode(IT8951_TCON_REG_RD);
|
||||
LCDWriteData(usRegAddr);
|
||||
//Read data from Host Data bus
|
||||
usData = LCDReadData();
|
||||
return usData;
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 5---REG_WR
|
||||
//-----------------------------------------------------------
|
||||
void IT8951WriteReg(uint16_t usRegAddr,uint16_t usValue)
|
||||
{
|
||||
//Send Cmd , Register Address and Write Value
|
||||
LCDWriteCmdCode(IT8951_TCON_REG_WR);
|
||||
LCDWriteData(usRegAddr);
|
||||
LCDWriteData(usValue);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 6---MEM_BST_RD_T
|
||||
//-----------------------------------------------------------
|
||||
void IT8951MemBurstReadTrigger(uint32_t ulMemAddr , uint32_t ulReadSize)
|
||||
{
|
||||
uint16_t usArg[4];
|
||||
//Setting Arguments for Memory Burst Read
|
||||
usArg[0] = (uint16_t)(ulMemAddr & 0x0000FFFF); //addr[15:0]
|
||||
usArg[1] = (uint16_t)( (ulMemAddr >> 16) & 0x0000FFFF ); //addr[25:16]
|
||||
usArg[2] = (uint16_t)(ulReadSize & 0x0000FFFF); //Cnt[15:0]
|
||||
usArg[3] = (uint16_t)( (ulReadSize >> 16) & 0x0000FFFF ); //Cnt[25:16]
|
||||
//Send Cmd and Arg
|
||||
LCDSendCmdArg(IT8951_TCON_MEM_BST_RD_T , usArg , 4);
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 7---MEM_BST_RD_S
|
||||
//-----------------------------------------------------------
|
||||
void IT8951MemBurstReadStart()
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_MEM_BST_RD_S);
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 8---MEM_BST_WR
|
||||
//-----------------------------------------------------------
|
||||
void IT8951MemBurstWrite(uint32_t ulMemAddr , uint32_t ulWriteSize)
|
||||
{
|
||||
uint16_t usArg[4];
|
||||
//Setting Arguments for Memory Burst Write
|
||||
usArg[0] = (uint16_t)(ulMemAddr & 0x0000FFFF); //addr[15:0]
|
||||
usArg[1] = (uint16_t)( (ulMemAddr >> 16) & 0x0000FFFF ); //addr[25:16]
|
||||
usArg[2] = (uint16_t)(ulWriteSize & 0x0000FFFF); //Cnt[15:0]
|
||||
usArg[3] = (uint16_t)( (ulWriteSize >> 16) & 0x0000FFFF ); //Cnt[25:16]
|
||||
//Send Cmd and Arg
|
||||
LCDSendCmdArg(IT8951_TCON_MEM_BST_WR , usArg , 4);
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 9---MEM_BST_END
|
||||
//-----------------------------------------------------------
|
||||
void IT8951MemBurstEnd(void)
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_MEM_BST_END);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Example of Memory Burst Write
|
||||
//-----------------------------------------------------------
|
||||
// ****************************************************************************************
|
||||
// Function name: IT8951MemBurstWriteProc( )
|
||||
//
|
||||
// Description:
|
||||
// IT8951 Burst Write procedure
|
||||
//
|
||||
// Arguments:
|
||||
// uint32_t ulMemAddr: IT8951 Memory Target Address
|
||||
// uint32_t ulWriteSize: Write Size (Unit: Word)
|
||||
// uint8_t* pDestBuf - Buffer of Sent data
|
||||
// Return Values:
|
||||
// NULL.
|
||||
// Note:
|
||||
//
|
||||
// ****************************************************************************************
|
||||
void IT8951MemBurstWriteProc(uint32_t ulMemAddr , uint32_t ulWriteSize, uint16_t* pSrcBuf )
|
||||
{
|
||||
|
||||
uint32_t i;
|
||||
|
||||
//Send Burst Write Start Cmd and Args
|
||||
IT8951MemBurstWrite(ulMemAddr , ulWriteSize);
|
||||
|
||||
//Burst Write Data
|
||||
for(i=0;i<ulWriteSize;i++)
|
||||
{
|
||||
LCDWriteData(pSrcBuf[i]);
|
||||
}
|
||||
|
||||
//Send Burst End Cmd
|
||||
IT8951MemBurstEnd();
|
||||
}
|
||||
|
||||
// ****************************************************************************************
|
||||
// Function name: IT8951MemBurstReadProc( )
|
||||
//
|
||||
// Description:
|
||||
// IT8951 Burst Read procedure
|
||||
//
|
||||
// Arguments:
|
||||
// uint32_t ulMemAddr: IT8951 Read Memory Address
|
||||
// uint32_t ulReadSize: Read Size (Unit: Word)
|
||||
// uint8_t* pDestBuf - Buffer for storing Read data
|
||||
// Return Values:
|
||||
// NULL.
|
||||
// Note:
|
||||
//
|
||||
// ****************************************************************************************
|
||||
void IT8951MemBurstReadProc(uint32_t ulMemAddr , uint32_t ulReadSize, uint16_t* pDestBuf )
|
||||
{
|
||||
//Send Burst Read Start Cmd and Args
|
||||
IT8951MemBurstReadTrigger(ulMemAddr , ulReadSize);
|
||||
|
||||
//Burst Read Fire
|
||||
IT8951MemBurstReadStart();
|
||||
|
||||
//Burst Read Request for SPI interface only
|
||||
LCDReadNData(pDestBuf, ulReadSize);
|
||||
|
||||
//Send Burst End Cmd
|
||||
IT8951MemBurstEnd(); //the same with IT8951MemBurstEnd()
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 10---LD_IMG
|
||||
//-----------------------------------------------------------
|
||||
void IT8951LoadImgStart(IT8951LdImgInfo* pstLdImgInfo)
|
||||
{
|
||||
uint16_t usArg;
|
||||
//Setting Argument for Load image start
|
||||
usArg = (pstLdImgInfo->usEndianType << 8 )
|
||||
|(pstLdImgInfo->usPixelFormat << 4)
|
||||
|(pstLdImgInfo->usRotate);
|
||||
//Send Cmd
|
||||
LCDWriteCmdCode(IT8951_TCON_LD_IMG);
|
||||
//Send Arg
|
||||
LCDWriteData(usArg);
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 11---LD_IMG_AREA
|
||||
//-----------------------------------------------------------
|
||||
void IT8951LoadImgAreaStart(IT8951LdImgInfo* pstLdImgInfo ,IT8951AreaImgInfo* pstAreaImgInfo)
|
||||
{
|
||||
uint16_t usArg[5];
|
||||
//Setting Argument for Load image start
|
||||
usArg[0] = (pstLdImgInfo->usEndianType << 8 )
|
||||
|(pstLdImgInfo->usPixelFormat << 4)
|
||||
|(pstLdImgInfo->usRotate);
|
||||
usArg[1] = pstAreaImgInfo->usX;
|
||||
usArg[2] = pstAreaImgInfo->usY;
|
||||
usArg[3] = pstAreaImgInfo->usWidth;
|
||||
usArg[4] = pstAreaImgInfo->usHeight;
|
||||
//Send Cmd and Args
|
||||
LCDSendCmdArg(IT8951_TCON_LD_IMG_AREA , usArg , 5);
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
//Host Cmd 12---LD_IMG_END
|
||||
//-----------------------------------------------------------
|
||||
void IT8951LoadImgEnd(void)
|
||||
{
|
||||
LCDWriteCmdCode(IT8951_TCON_LD_IMG_END);
|
||||
}
|
||||
|
||||
void GetIT8951SystemInfo(void* pBuf)
|
||||
{
|
||||
uint16_t* pusWord = (uint16_t*)pBuf;
|
||||
IT8951DevInfo* pstDevInfo;
|
||||
|
||||
//Send I80 CMD
|
||||
LCDWriteCmdCode(USDEF_I80_CMD_GET_DEV_INFO);
|
||||
|
||||
//Burst Read Request for SPI interface only
|
||||
LCDReadNData(pusWord, sizeof(IT8951DevInfo)/2);//Polling HRDY for each words(2-bytes) if possible
|
||||
|
||||
//Show Device information of IT8951
|
||||
pstDevInfo = (IT8951DevInfo*)pBuf;
|
||||
printf("Panel(W,H) = (%d,%d)\r\n",
|
||||
pstDevInfo->usPanelW, pstDevInfo->usPanelH );
|
||||
printf("Image Buffer Address = %X\r\n",
|
||||
pstDevInfo->usImgBufAddrL | (pstDevInfo->usImgBufAddrH << 16));
|
||||
//Show Firmware and LUT Version
|
||||
printf("FW Version = %s\r\n", (uint8_t*)pstDevInfo->usFWVersion);
|
||||
printf("LUT Version = %s\r\n", (uint8_t*)pstDevInfo->usLUTVersion);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Initial function 2---Set Image buffer base address
|
||||
//-----------------------------------------------------------
|
||||
void IT8951SetImgBufBaseAddr(uint32_t ulImgBufAddr)
|
||||
{
|
||||
uint16_t usWordH = (uint16_t)((ulImgBufAddr >> 16) & 0x0000FFFF);
|
||||
uint16_t usWordL = (uint16_t)( ulImgBufAddr & 0x0000FFFF);
|
||||
//Write LISAR Reg
|
||||
IT8951WriteReg(LISAR + 2 ,usWordH);
|
||||
IT8951WriteReg(LISAR ,usWordL);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// 3.6. Display Functions
|
||||
//-----------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Display function 1---Wait for LUT Engine Finish
|
||||
// Polling Display Engine Ready by LUTNo
|
||||
//-----------------------------------------------------------
|
||||
void IT8951WaitForDisplayReady()
|
||||
{
|
||||
//Check IT8951 Register LUTAFSR => NonZero Busy, 0 - Free
|
||||
while(IT8951ReadReg(LUTAFSR));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Display function 2---Load Image Area process
|
||||
//-----------------------------------------------------------
|
||||
void IT8951HostAreaPackedPixelWrite(IT8951LdImgInfo* pstLdImgInfo,IT8951AreaImgInfo* pstAreaImgInfo)
|
||||
{
|
||||
uint32_t i,j;
|
||||
//Source buffer address of Host
|
||||
uint16_t* pusFrameBuf = (uint16_t*)pstLdImgInfo->ulStartFBAddr;
|
||||
|
||||
//Set Image buffer(IT8951) Base address
|
||||
IT8951SetImgBufBaseAddr(pstLdImgInfo->ulImgBufBaseAddr);
|
||||
//Send Load Image start Cmd
|
||||
IT8951LoadImgAreaStart(pstLdImgInfo , pstAreaImgInfo);
|
||||
//Host Write Data
|
||||
for(j=0;j< pstAreaImgInfo->usHeight;j++)
|
||||
{
|
||||
for(i=0;i< pstAreaImgInfo->usWidth/2;i++)
|
||||
{
|
||||
//Write a Word(2-Bytes) for each time
|
||||
LCDWriteData(*pusFrameBuf);
|
||||
pusFrameBuf++;
|
||||
}
|
||||
}
|
||||
//Send Load Img End Command
|
||||
IT8951LoadImgEnd();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Display functions 3---Application for Display panel Area
|
||||
//-----------------------------------------------------------
|
||||
void IT8951DisplayArea(uint16_t usX, uint16_t usY, uint16_t usW, uint16_t usH, uint16_t usDpyMode)
|
||||
{
|
||||
//Send I80 Display Command (User defined command of IT8951)
|
||||
LCDWriteCmdCode(USDEF_I80_CMD_DPY_AREA); //0x0034
|
||||
//Write arguments
|
||||
LCDWriteData(usX);
|
||||
LCDWriteData(usY);
|
||||
LCDWriteData(usW);
|
||||
LCDWriteData(usH);
|
||||
LCDWriteData(usDpyMode);
|
||||
}
|
||||
|
||||
//Display Area with bitmap on EPD
|
||||
//-----------------------------------------------------------
|
||||
// Display Function 4---for Display Area for 1-bpp mode format
|
||||
// the bitmap(1bpp) mode will be enable when Display
|
||||
// and restore to Default setting (disable) after displaying finished
|
||||
//-----------------------------------------------------------
|
||||
void IT8951DisplayArea1bpp(uint16_t usX, uint16_t usY, uint16_t usW, uint16_t usH, uint16_t usDpyMode, uint8_t ucBGGrayVal, uint8_t ucFGGrayVal)
|
||||
{
|
||||
//Set Display mode to 1 bpp mode - Set 0x18001138 Bit[18](0x1800113A Bit[2])to 1
|
||||
IT8951WriteReg(UP1SR+2, IT8951ReadReg(UP1SR+2) | (1<<2));
|
||||
|
||||
//Set BitMap color table 0 and 1 , => Set Register[0x18001250]:
|
||||
//Bit[7:0]: ForeGround Color(G0~G15) for 1
|
||||
//Bit[15:8]:Background Color(G0~G15) for 0
|
||||
IT8951WriteReg(BGVR, (ucBGGrayVal<<8) | ucFGGrayVal);
|
||||
|
||||
//Display
|
||||
IT8951DisplayArea( usX, usY, usW, usH, usDpyMode);
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Restore to normal mode
|
||||
IT8951WriteReg(UP1SR+2, IT8951ReadReg(UP1SR+2) & ~(1<<2));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
// Command - 0x0037 for Display Base addr by User
|
||||
// uint32_t ulDpyBufAddr - Host programmer need to indicate the Image buffer address of IT8951
|
||||
// In current case, there is only one image buffer in IT8951 so far.
|
||||
// So Please set the Image buffer address you got in initial stage.
|
||||
// (gulImgBufAddr by Get device information 0x0302 command)
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
void IT8951DisplayAreaBuf(uint16_t usX, uint16_t usY, uint16_t usW, uint16_t usH, uint16_t usDpyMode, uint32_t ulDpyBufAddr)
|
||||
{
|
||||
//Send I80 Display Command (User defined command of IT8951)
|
||||
LCDWriteCmdCode(USDEF_I80_CMD_DPY_BUF_AREA); //0x0037
|
||||
|
||||
//Write arguments
|
||||
LCDWriteData(usX);
|
||||
LCDWriteData(usY);
|
||||
LCDWriteData(usW);
|
||||
LCDWriteData(usH);
|
||||
LCDWriteData(usDpyMode);
|
||||
LCDWriteData((uint16_t)ulDpyBufAddr); //Display Buffer Base address[15:0]
|
||||
LCDWriteData((uint16_t)(ulDpyBufAddr>>16)); //Display Buffer Base address[26:16]
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Test function 1---Software Initial
|
||||
//-----------------------------------------------------------
|
||||
uint8_t IT8951_Init()
|
||||
{
|
||||
if (!bcm2835_init())
|
||||
{
|
||||
printf("bcm2835_init error \n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
bcm2835_spi_begin();
|
||||
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); //default
|
||||
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0); //default
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_32); //default
|
||||
|
||||
bcm2835_gpio_fsel(CS, BCM2835_GPIO_FSEL_OUTP);
|
||||
bcm2835_gpio_fsel(HRDY, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RESET, BCM2835_GPIO_FSEL_OUTP);
|
||||
|
||||
bcm2835_gpio_write(CS, HIGH);
|
||||
|
||||
printf("****** IT8951 ******\n");
|
||||
|
||||
bcm2835_gpio_write(RESET, LOW);
|
||||
bcm2835_delay(100);
|
||||
bcm2835_gpio_write(RESET, HIGH);
|
||||
|
||||
//Get Device Info
|
||||
GetIT8951SystemInfo(&gstI80DevInfo);
|
||||
|
||||
gpFrameBuf = malloc(gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);
|
||||
if (!gpFrameBuf)
|
||||
{
|
||||
perror("malloc error!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
gulImgBufAddr = gstI80DevInfo.usImgBufAddrL | (gstI80DevInfo.usImgBufAddrH << 16);
|
||||
|
||||
//Set to Enable I80 Packed mode
|
||||
IT8951WriteReg(I80CPCR, 0x0001);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void IT8951_Cancel()
|
||||
{
|
||||
free(gpFrameBuf);
|
||||
|
||||
bcm2835_spi_end();
|
||||
bcm2835_close();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Test function 2---Example of Display Flow
|
||||
//-----------------------------------------------------------
|
||||
void IT8951DisplayExample()
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
//Prepare image
|
||||
//Write pixel 0xF0(White) to Frame Buffer
|
||||
memset(gpFrameBuf, 0xF0, gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);
|
||||
|
||||
//Check TCon is free ? Wait TCon Ready (optional)
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// initial display - Display white only
|
||||
//--------------------------------------------------------------------------------------------
|
||||
//Load Image and Display
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = gstI80DevInfo.usPanelW;
|
||||
stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;
|
||||
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 0 for initial White to clear Panel
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 0);
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// Regular display - Display Any Gray colors with Mode 2 or others
|
||||
//--------------------------------------------------------------------------------------------
|
||||
//Preparing buffer to All black (8 bpp image)
|
||||
//or you can create your image pattern here..
|
||||
memset(gpFrameBuf, 0x00, gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);
|
||||
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = gstI80DevInfo.usPanelW;
|
||||
stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;
|
||||
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
|
||||
}
|
||||
|
||||
void IT8951DisplayExample2()
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// Regular display - Display Any Gray colors with Mode 2 or others
|
||||
//--------------------------------------------------------------------------------------------
|
||||
//Preparing buffer to All black (8 bpp image)
|
||||
//or you can create your image pattern here..
|
||||
memset(gpFrameBuf , 0x00, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 1, 0x11, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 2, 0x22, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 3, 0x33, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 4, 0x44, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 5, 0x55, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 6, 0x66, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 7, 0x77, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 8, 0x88, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 9, 0x99, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 10, 0xaa, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 11, 0xbb, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 12, 0xcc, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 13, 0xdd, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 14, 0xee, 1200 * 51 * 1);
|
||||
memset(gpFrameBuf+1200 * 51 * 15, 0xff, (1200*825)-(1200 * 51 * 15));
|
||||
IT8951WaitForDisplayReady();
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = gstI80DevInfo.usPanelW;
|
||||
stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
|
||||
}
|
||||
/*
|
||||
extern const unsigned char pic[];
|
||||
void IT8951DisplayExample3()
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
uint32_t i;
|
||||
|
||||
for (i = 0;i < 1200*825;i++)
|
||||
{
|
||||
gpFrameBuf[i] = pic[i];
|
||||
}
|
||||
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = 1200;
|
||||
stAreaImgInfo.usHeight = 825;
|
||||
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
|
||||
}
|
||||
*/
|
||||
|
||||
extern uint16_t bmp01[];
|
||||
|
||||
void IT8951_GUI_Example()
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
Point point[5];
|
||||
|
||||
//memset(gpFrameBuf, 0xff, gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);
|
||||
EPD_Clear(0xff);
|
||||
|
||||
EPD_DrawLine(100,100,200,200,0x40);
|
||||
EPD_DrawLine(200,200,400,200,0x40);
|
||||
EPD_DrawLine(400,200,400,400,0x40);
|
||||
EPD_DrawLine(400,400,600,400,0x40);
|
||||
EPD_DrawLine(600,600,800,800,0x40);
|
||||
|
||||
EPD_DrawLine(0,0,99,99,0x10);
|
||||
EPD_DrawLine(801,801,1200,825,0x00);
|
||||
|
||||
EPD_DrawRect(500, 500, 100, 100, 0x00);
|
||||
|
||||
EPD_DrawCircle(700, 500, 100, 0x00);
|
||||
|
||||
point[0].X = 30;
|
||||
point[0].Y = 40;
|
||||
|
||||
point[1].X = 40;
|
||||
point[1].Y = 70;
|
||||
|
||||
point[2].X = 50;
|
||||
point[2].Y = 90;
|
||||
|
||||
point[3].X = 90;
|
||||
point[3].Y = 60;
|
||||
|
||||
point[4].X = 70;
|
||||
point[4].Y = 20;
|
||||
|
||||
EPD_DrawPolygon(point,5,0x00);
|
||||
|
||||
EPD_DrawEllipse(800, 300, 100, 50, 0x00);
|
||||
|
||||
EPD_FillRect(300, 500, 100, 50, 0x00);
|
||||
|
||||
EPD_FillCircle(100, 500, 70,0x00);
|
||||
|
||||
|
||||
EPD_Text(400,100, (uint8_t*)"hello world",0x00, 0xff);
|
||||
EPD_Text(400,200, (uint8_t*)"yang weibiao",0x00, 0xff);
|
||||
|
||||
|
||||
// EPD_DrawBitmap(0,0,bmp01);
|
||||
|
||||
//EPD_DrawMatrix(1,1,550,412,bmp01);
|
||||
EPD_DrawMatrix(100,100,550,412,bmp01);
|
||||
|
||||
|
||||
//<2F><>ʾͼ<CABE><CDBC>
|
||||
//Show_bmp("16.bmp");
|
||||
|
||||
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = 1200;
|
||||
stAreaImgInfo.usHeight = 825;
|
||||
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
|
||||
}
|
||||
|
||||
void IT8951_BMP_Example(uint32_t x, uint32_t y,char *path)
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
EPD_Clear(0xff);
|
||||
|
||||
//<2F><>ʾͼ<CABE><CDBC>
|
||||
Show_bmp(x,y,path);
|
||||
|
||||
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t)gpFrameBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP;
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = 1200;
|
||||
stAreaImgInfo.usHeight = 825;
|
||||
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
//Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform
|
||||
IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Load 1bpp image flow (must display with IT8951DisplayArea1bpp()
|
||||
//-----------------------------------------------------------
|
||||
|
||||
void IT8951Load1bppImage(uint8_t* p1bppImgBuf, uint16_t usX, uint16_t usY, uint16_t usW, uint16_t usH)
|
||||
{
|
||||
IT8951LdImgInfo stLdImgInfo;
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
//Setting Load image information
|
||||
stLdImgInfo.ulStartFBAddr = (uint32_t) p1bppImgBuf;
|
||||
stLdImgInfo.usEndianType = IT8951_LDIMG_L_ENDIAN;
|
||||
stLdImgInfo.usPixelFormat = IT8951_8BPP; //we use 8bpp because IT8951 dose not support 1bpp mode for load image?Aso we use Load 8bpp mode ,but the transfer size needs to be reduced to Size/8
|
||||
stLdImgInfo.usRotate = IT8951_ROTATE_0;
|
||||
stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = usX/8;
|
||||
stAreaImgInfo.usY = usY;
|
||||
stAreaImgInfo.usWidth = usW/8;//1bpp, Chaning Transfer size setting to 1/8X of 8bpp mode
|
||||
stAreaImgInfo.usHeight = usH;
|
||||
printf("IT8951HostAreaPackedPixelWrite [wait]\n\r");
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Test function 3---Example of Display 1bpp Flow
|
||||
//-----------------------------------------------------------
|
||||
void IT8951Display1bppExample()
|
||||
{
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
//Prepare image
|
||||
//Write pixel 0x00(Black) to Frame Buffer
|
||||
//or you can create your image pattern here..
|
||||
memset(gpFrameBuf, 0x00, (gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH)/8);//Host Frame Buffer(Source)
|
||||
|
||||
//Check TCon is free ? Wait TCon Ready (optional)
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Load Image and Display
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = gstI80DevInfo.usPanelW;
|
||||
stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951Load1bppImage(gpFrameBuf, stAreaImgInfo.usX, stAreaImgInfo.usY, stAreaImgInfo.usWidth, stAreaImgInfo.usHeight);//Display function 4, Arg
|
||||
|
||||
//Display Area - (x,y,w,h) with mode 2 for Gray Scale
|
||||
//e.g. if we want to set b0(Background color) for Black-0x00 , Set b1(Foreground) for White-0xFF
|
||||
IT8951DisplayArea1bpp(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 0, 0x00, 0xFF);
|
||||
}
|
||||
|
||||
void IT8951Display1bppExample2()
|
||||
{
|
||||
IT8951AreaImgInfo stAreaImgInfo;
|
||||
|
||||
//Prepare image
|
||||
//Write pixel 0x00(Black) to Frame Buffer
|
||||
//or you can create your image pattern here..
|
||||
memset(gpFrameBuf, 0xff, (gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH)/8);//Host Frame Buffer(Source)
|
||||
|
||||
//Check TCon is free ? Wait TCon Ready (optional)
|
||||
IT8951WaitForDisplayReady();
|
||||
|
||||
//Load Image and Display
|
||||
//Set Load Area
|
||||
stAreaImgInfo.usX = 0;
|
||||
stAreaImgInfo.usY = 0;
|
||||
stAreaImgInfo.usWidth = gstI80DevInfo.usPanelW;
|
||||
stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;
|
||||
//Load Image from Host to IT8951 Image Buffer
|
||||
IT8951Load1bppImage(gpFrameBuf, stAreaImgInfo.usX, stAreaImgInfo.usY, stAreaImgInfo.usWidth, stAreaImgInfo.usHeight);//Display function 4, Arg
|
||||
|
||||
//Display Area - (x,y,w,h) with mode 2 for Gray Scale
|
||||
//e.g. if we want to set b0(Background color) for Black-0x00 , Set b1(Foreground) for White-0xFF
|
||||
IT8951DisplayArea1bpp(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 0, 0x00, 0xFF);
|
||||
}
|
||||
|
168
inkycal/display/drivers/9_in_7_drivers/IT8951/IT8951.h
Normal file
@@ -0,0 +1,168 @@
|
||||
#ifndef _IT8951_H_
|
||||
#define _IT8951_H_
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "miniGUI.h"
|
||||
|
||||
#define CS 8
|
||||
#define HRDY 24
|
||||
#define RESET 17
|
||||
|
||||
//prototype of structure
|
||||
//structure prototype 1
|
||||
typedef struct IT8951LdImgInfo
|
||||
{
|
||||
uint16_t usEndianType; //little or Big Endian
|
||||
uint16_t usPixelFormat; //bpp
|
||||
uint16_t usRotate; //Rotate mode
|
||||
uint32_t ulStartFBAddr; //Start address of source Frame buffer
|
||||
uint32_t ulImgBufBaseAddr;//Base address of target image buffer
|
||||
|
||||
}IT8951LdImgInfo;
|
||||
|
||||
//structure prototype 2
|
||||
typedef struct IT8951AreaImgInfo
|
||||
{
|
||||
uint16_t usX;
|
||||
uint16_t usY;
|
||||
uint16_t usWidth;
|
||||
uint16_t usHeight;
|
||||
}IT8951AreaImgInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t usPanelW;
|
||||
uint16_t usPanelH;
|
||||
uint16_t usImgBufAddrL;
|
||||
uint16_t usImgBufAddrH;
|
||||
uint16_t usFWVersion[8]; //16 Bytes String
|
||||
uint16_t usLUTVersion[8]; //16 Bytes String
|
||||
}IT8951DevInfo;
|
||||
|
||||
//Built in I80 Command Code
|
||||
#define IT8951_TCON_SYS_RUN 0x0001
|
||||
#define IT8951_TCON_STANDBY 0x0002
|
||||
#define IT8951_TCON_SLEEP 0x0003
|
||||
#define IT8951_TCON_REG_RD 0x0010
|
||||
#define IT8951_TCON_REG_WR 0x0011
|
||||
#define IT8951_TCON_MEM_BST_RD_T 0x0012
|
||||
#define IT8951_TCON_MEM_BST_RD_S 0x0013
|
||||
#define IT8951_TCON_MEM_BST_WR 0x0014
|
||||
#define IT8951_TCON_MEM_BST_END 0x0015
|
||||
#define IT8951_TCON_LD_IMG 0x0020
|
||||
#define IT8951_TCON_LD_IMG_AREA 0x0021
|
||||
#define IT8951_TCON_LD_IMG_END 0x0022
|
||||
|
||||
//I80 User defined command code
|
||||
#define USDEF_I80_CMD_DPY_AREA 0x0034
|
||||
#define USDEF_I80_CMD_GET_DEV_INFO 0x0302
|
||||
#define USDEF_I80_CMD_DPY_BUF_AREA 0x0037
|
||||
//Panel
|
||||
#define IT8951_PANEL_WIDTH 1024 //it Get Device information
|
||||
#define IT8951_PANEL_HEIGHT 758
|
||||
|
||||
//Rotate mode
|
||||
#define IT8951_ROTATE_0 0
|
||||
#define IT8951_ROTATE_90 1
|
||||
#define IT8951_ROTATE_180 2
|
||||
#define IT8951_ROTATE_270 3
|
||||
|
||||
//Pixel mode , BPP - Bit per Pixel
|
||||
#define IT8951_2BPP 0
|
||||
#define IT8951_3BPP 1
|
||||
#define IT8951_4BPP 2
|
||||
#define IT8951_8BPP 3
|
||||
|
||||
//Waveform Mode
|
||||
#define IT8951_MODE_0 0
|
||||
#define IT8951_MODE_1 1
|
||||
#define IT8951_MODE_2 2
|
||||
#define IT8951_MODE_3 3
|
||||
#define IT8951_MODE_4 4
|
||||
//Endian Type
|
||||
#define IT8951_LDIMG_L_ENDIAN 0
|
||||
#define IT8951_LDIMG_B_ENDIAN 1
|
||||
//Auto LUT
|
||||
#define IT8951_DIS_AUTO_LUT 0
|
||||
#define IT8951_EN_AUTO_LUT 1
|
||||
//LUT Engine Status
|
||||
#define IT8951_ALL_LUTE_BUSY 0xFFFF
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// IT8951 TCon Registers defines
|
||||
//-----------------------------------------------------------------------
|
||||
//Register Base Address
|
||||
#define DISPLAY_REG_BASE 0x1000 //Register RW access for I80 only
|
||||
//Base Address of Basic LUT Registers
|
||||
#define LUT0EWHR (DISPLAY_REG_BASE + 0x00) //LUT0 Engine Width Height Reg
|
||||
#define LUT0XYR (DISPLAY_REG_BASE + 0x40) //LUT0 XY Reg
|
||||
#define LUT0BADDR (DISPLAY_REG_BASE + 0x80) //LUT0 Base Address Reg
|
||||
#define LUT0MFN (DISPLAY_REG_BASE + 0xC0) //LUT0 Mode and Frame number Reg
|
||||
#define LUT01AF (DISPLAY_REG_BASE + 0x114) //LUT0 and LUT1 Active Flag Reg
|
||||
//Update Parameter Setting Register
|
||||
#define UP0SR (DISPLAY_REG_BASE + 0x134) //Update Parameter0 Setting Reg
|
||||
|
||||
#define UP1SR (DISPLAY_REG_BASE + 0x138) //Update Parameter1 Setting Reg
|
||||
#define LUT0ABFRV (DISPLAY_REG_BASE + 0x13C) //LUT0 Alpha blend and Fill rectangle Value
|
||||
#define UPBBADDR (DISPLAY_REG_BASE + 0x17C) //Update Buffer Base Address
|
||||
#define LUT0IMXY (DISPLAY_REG_BASE + 0x180) //LUT0 Image buffer X/Y offset Reg
|
||||
#define LUTAFSR (DISPLAY_REG_BASE + 0x224) //LUT Status Reg (status of All LUT Engines)
|
||||
|
||||
#define BGVR (DISPLAY_REG_BASE + 0x250) //Bitmap (1bpp) image color table
|
||||
//-------System Registers----------------
|
||||
#define SYS_REG_BASE 0x0000
|
||||
|
||||
//Address of System Registers
|
||||
#define I80CPCR (SYS_REG_BASE + 0x04)
|
||||
//-------Memory Converter Registers----------------
|
||||
#define MCSR_BASE_ADDR 0x0200
|
||||
#define MCSR (MCSR_BASE_ADDR + 0x0000)
|
||||
#define LISAR (MCSR_BASE_ADDR + 0x0008)
|
||||
|
||||
void InterfaceInit(void);
|
||||
//void HostInit(void);
|
||||
uint8_t IT8951_Init(void);
|
||||
void IT8951_Cancel(void);
|
||||
void IT8951DisplayExample(void);
|
||||
void IT8951DisplayExample2(void);
|
||||
void IT8951Display1bppExample2(void);
|
||||
void IT8951DisplayExample3(void);
|
||||
void IT8951_GUI_Example(void);
|
||||
void IT8951_BMP_Example(uint32_t x, uint32_t y,char *path);
|
||||
|
||||
|
||||
//temp
|
||||
uint16_t IT8951ReadReg(uint16_t usRegAddr);
|
||||
void IT8951SetImgBufBaseAddr(uint32_t ulImgBufAddr);
|
||||
void LCDWaitForReady(void);
|
||||
void GetIT8951SystemInfo(void* pBuf);
|
||||
void gpio_i80_16b_cmd_out(uint16_t usCmd);
|
||||
void GPIO_Configuration_Out(void);
|
||||
void GPIO_Configuration_In(void);
|
||||
|
||||
void IT8951DisplayClear(void);
|
||||
|
||||
//uint16_t IT8951ReadReg(uint16_t usRegAddr);
|
||||
void IT8951WriteReg(uint16_t usRegAddr,uint16_t usValue);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
9
inkycal/display/drivers/9_in_7_drivers/IT8951/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
SRCS=IT8951.c miniGUI.c main.c AsciiLib.c bmp.c
|
||||
CC=gcc
|
||||
TARGET=IT8951
|
||||
|
||||
$(TARGET):$(SRCS)
|
||||
$(CC) -Wall $(SRCS) -o $(TARGET) -lbcm2835
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET)
|
7837
inkycal/display/drivers/9_in_7_drivers/IT8951/bmp.c
Normal file
40
inkycal/display/drivers/9_in_7_drivers/IT8951/main.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include "IT8951.h"
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
/*
|
||||
printf("ReadReg = 0x%x\n",IT8951ReadReg(LISAR));
|
||||
IT8951WriteReg(LISAR,0x1234);
|
||||
printf("ReadReg = 0x%x\n",IT8951ReadReg(LISAR));
|
||||
*/
|
||||
|
||||
if(IT8951_Init())
|
||||
{
|
||||
printf("IT8951_Init error \n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//IT8951DisplayExample();
|
||||
//IT8951DisplayExample2();
|
||||
//IT8951DisplayExample3();
|
||||
//printf("IT8951_GUI_Example\n");
|
||||
//IT8951_GUI_Example();
|
||||
|
||||
if (argc != 4)
|
||||
{
|
||||
printf("Error: argc!=4.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
uint32_t x,y;
|
||||
sscanf(argv[1],"%d",&x);
|
||||
sscanf(argv[2],"%d",&y);
|
||||
|
||||
IT8951_BMP_Example(x,y,argv[3]);
|
||||
|
||||
IT8951_Cancel();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
690
inkycal/display/drivers/9_in_7_drivers/IT8951/miniGUI.c
Normal file
@@ -0,0 +1,690 @@
|
||||
#include <string.h>
|
||||
#include "miniGUI.h"
|
||||
#include "AsciiLib.h"
|
||||
|
||||
extern IT8951DevInfo gstI80DevInfo;
|
||||
extern uint8_t* gpFrameBuf; //Host Source Frame buffer
|
||||
|
||||
void EPD_Clear(uint8_t Color)
|
||||
{
|
||||
memset(gpFrameBuf, Color, gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);
|
||||
}
|
||||
|
||||
void EPD_DrawPixel(uint16_t x0, uint16_t y0, uint8_t color)
|
||||
{
|
||||
if(x0 < 0 || x0 >= gstI80DevInfo.usPanelW || y0 < 0 || y0 >= gstI80DevInfo.usPanelH)
|
||||
return ;
|
||||
|
||||
/*
|
||||
<09>Դ洦<D4B4><E6B4A6>
|
||||
*/
|
||||
gpFrameBuf[y0*gstI80DevInfo.usPanelW + x0] = color;
|
||||
}
|
||||
|
||||
void EPD_DrawLine(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint8_t color)
|
||||
{
|
||||
uint32_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
|
||||
yinc1 = 0, yinc2 = 0, den = 0, num = 0, num_add = 0, num_pixels = 0,
|
||||
curpixel = 0;
|
||||
|
||||
deltax = ABS(x2 - x1); /* The difference between the x's */
|
||||
deltay = ABS(y2 - y1); /* The difference between the y's */
|
||||
x = x1; /* Start x off at the first pixel */
|
||||
y = y1; /* Start y off at the first pixel */
|
||||
|
||||
if (x2 >= x1) /* The x-values are increasing */
|
||||
{
|
||||
xinc1 = 1;
|
||||
xinc2 = 1;
|
||||
}
|
||||
else /* The x-values are decreasing */
|
||||
{
|
||||
xinc1 = -1;
|
||||
xinc2 = -1;
|
||||
}
|
||||
|
||||
if (y2 >= y1) /* The y-values are increasing */
|
||||
{
|
||||
yinc1 = 1;
|
||||
yinc2 = 1;
|
||||
}
|
||||
else /* The y-values are decreasing */
|
||||
{
|
||||
yinc1 = -1;
|
||||
yinc2 = -1;
|
||||
}
|
||||
|
||||
if (deltax >= deltay) /* There is at least one x-value for every y-value */
|
||||
{
|
||||
xinc1 = 0; /* Don't change the x when numerator >= denominator */
|
||||
yinc2 = 0; /* Don't change the y for every iteration */
|
||||
den = deltax;
|
||||
num = deltax / 2;
|
||||
num_add = deltay;
|
||||
num_pixels = deltax; /* There are more x-values than y-values */
|
||||
}
|
||||
else /* There is at least one y-value for every x-value */
|
||||
{
|
||||
xinc2 = 0; /* Don't change the x for every iteration */
|
||||
yinc1 = 0; /* Don't change the y when numerator >= denominator */
|
||||
den = deltay;
|
||||
num = deltay / 2;
|
||||
num_add = deltax;
|
||||
num_pixels = deltay; /* There are more y-values than x-values */
|
||||
}
|
||||
|
||||
for (curpixel = 0; curpixel <= num_pixels; curpixel++)
|
||||
{
|
||||
EPD_DrawPixel(x, y, color); /* Draw the current pixel */
|
||||
num += num_add; /* Increase the numerator by the top of the fraction */
|
||||
if (num >= den) /* Check if numerator >= denominator */
|
||||
{
|
||||
num -= den; /* Calculate the new numerator value */
|
||||
x += xinc1; /* Change the x as appropriate */
|
||||
y += yinc1; /* Change the y as appropriate */
|
||||
}
|
||||
x += xinc2; /* Change the x as appropriate */
|
||||
y += yinc2; /* Change the y as appropriate */
|
||||
}
|
||||
}
|
||||
|
||||
void EPD_DrawRect(uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height,uint8_t color)
|
||||
{
|
||||
EPD_DrawLine(Xpos, Ypos, Xpos+Width, Ypos, color);
|
||||
EPD_DrawLine(Xpos, Ypos, Xpos, Ypos+Height, color);
|
||||
EPD_DrawLine(Xpos, Ypos+Height, Xpos+Width, Ypos+Height, color);
|
||||
EPD_DrawLine(Xpos+Width, Ypos, Xpos+Width, Ypos+Height, color);
|
||||
}
|
||||
|
||||
|
||||
void EPD_DrawCircle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius,uint8_t color)
|
||||
{
|
||||
int decision; /* Decision Variable */
|
||||
uint32_t current_x; /* Current X Value */
|
||||
uint32_t current_y; /* Current Y Value */
|
||||
|
||||
decision = 3 - (Radius << 1);
|
||||
current_x = 0;
|
||||
current_y = Radius;
|
||||
|
||||
while (current_x <= current_y)
|
||||
{
|
||||
EPD_DrawPixel((Xpos + current_x), (Ypos - current_y), color);
|
||||
|
||||
EPD_DrawPixel((Xpos - current_x), (Ypos - current_y), color);
|
||||
|
||||
EPD_DrawPixel((Xpos + current_y), (Ypos - current_x), color);
|
||||
|
||||
EPD_DrawPixel((Xpos - current_y), (Ypos - current_x), color);
|
||||
|
||||
EPD_DrawPixel((Xpos + current_x), (Ypos + current_y), color);
|
||||
|
||||
EPD_DrawPixel((Xpos - current_x), (Ypos + current_y), color);
|
||||
|
||||
EPD_DrawPixel((Xpos + current_y), (Ypos + current_x), color);
|
||||
|
||||
EPD_DrawPixel((Xpos - current_y), (Ypos + current_x), color);
|
||||
|
||||
if (decision < 0)
|
||||
{
|
||||
decision += (current_x << 2) + 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
decision += ((current_x - current_y) << 2) + 10;
|
||||
current_y--;
|
||||
}
|
||||
current_x++;
|
||||
}
|
||||
}
|
||||
|
||||
void EPD_DrawPolygon(pPoint Points,uint16_t PointCount,uint8_t color)
|
||||
{
|
||||
uint16_t x = 0, y = 0;
|
||||
|
||||
if(PointCount < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
EPD_DrawLine(Points->X, Points->Y, (Points+PointCount-1)->X, (Points+PointCount-1)->Y,color);
|
||||
|
||||
while(--PointCount)
|
||||
{
|
||||
x = Points->X;
|
||||
y = Points->Y;
|
||||
Points++;
|
||||
EPD_DrawLine(x, y, Points->X, Points->Y,color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EPD_DrawEllipse(uint16_t Xpos, uint16_t Ypos, uint16_t XRadius, uint16_t YRadius, uint8_t color)
|
||||
{
|
||||
int32_t x = 0, y = -YRadius, err = 2-2*XRadius, e2;
|
||||
float k = 0, rad1 = 0, rad2 = 0;
|
||||
|
||||
rad1 = XRadius;
|
||||
rad2 = YRadius;
|
||||
|
||||
k = (float)(rad2/rad1);
|
||||
|
||||
do {
|
||||
EPD_DrawPixel((Xpos-(uint16_t)(x/k)), (Ypos+y), color);
|
||||
EPD_DrawPixel((Xpos+(uint16_t)(x/k)), (Ypos+y), color);
|
||||
EPD_DrawPixel((Xpos+(uint16_t)(x/k)), (Ypos-y), color);
|
||||
EPD_DrawPixel((Xpos-(uint16_t)(x/k)), (Ypos-y), color);
|
||||
|
||||
e2 = err;
|
||||
if (e2 <= x) {
|
||||
err += ++x*2+1;
|
||||
if (-y == x && e2 <= y) e2 = 0;
|
||||
}
|
||||
if (e2 > y) err += ++y*2+1;
|
||||
}
|
||||
while (y <= 0);
|
||||
}
|
||||
|
||||
void EPD_FillRect(uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height,uint8_t color)
|
||||
{
|
||||
uint16_t i;
|
||||
for (i=0;i<Height;i++)
|
||||
{
|
||||
EPD_DrawLine(Xpos, Ypos+i,Xpos+Width,Ypos+i,color);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void EPD_FillCircle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius,uint8_t color)
|
||||
{
|
||||
int32_t decision; /* Decision Variable */
|
||||
uint32_t current_x; /* Current X Value */
|
||||
uint32_t current_y; /* Current Y Value */
|
||||
|
||||
decision = 3 - (Radius << 1);
|
||||
|
||||
current_x = 0;
|
||||
current_y = Radius;
|
||||
|
||||
while (current_x <= current_y)
|
||||
{
|
||||
if(current_y > 0)
|
||||
{
|
||||
EPD_DrawLine(Xpos - current_y, Ypos + current_x,Xpos +current_y,Ypos + current_x,color);
|
||||
EPD_DrawLine(Xpos - current_y, Ypos - current_x,Xpos + current_y, Ypos - current_x,color);
|
||||
}
|
||||
|
||||
if(current_x > 0)
|
||||
{
|
||||
EPD_DrawLine(Xpos - current_x, Ypos - current_y,Xpos+current_x,Ypos - current_y,color);
|
||||
EPD_DrawLine(Xpos - current_x, Ypos + current_y,Xpos+current_x,Ypos + current_y,color);
|
||||
}
|
||||
if (decision < 0)
|
||||
{
|
||||
decision += (current_x << 2) + 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
decision += ((current_x - current_y) << 2) + 10;
|
||||
current_y--;
|
||||
}
|
||||
current_x++;
|
||||
}
|
||||
|
||||
EPD_DrawCircle(Xpos, Ypos, Radius,color);
|
||||
}
|
||||
|
||||
void EPD_PutChar(uint16_t Xpos,uint16_t Ypos,uint8_t ASCI,uint8_t charColor,uint8_t bkColor )
|
||||
{
|
||||
uint16_t i, j;
|
||||
uint8_t buffer[16], tmp_char;
|
||||
GetASCIICode(buffer,ASCI);
|
||||
for(i=0; i<16; i++)
|
||||
{
|
||||
tmp_char = buffer[i];
|
||||
for(j=0; j<8; j++)
|
||||
{
|
||||
if(((tmp_char >> (7-j)) & 0x01) == 0x01)
|
||||
{
|
||||
EPD_DrawPixel(Xpos+j, Ypos+i, charColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
EPD_DrawPixel(Xpos+j, Ypos+i, bkColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EPD_Text(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint8_t Color,uint8_t bkColor)
|
||||
{
|
||||
uint8_t TempChar;
|
||||
do
|
||||
{
|
||||
TempChar = *str++;
|
||||
EPD_PutChar(Xpos, Ypos, TempChar, Color, bkColor);
|
||||
if(Xpos < gstI80DevInfo.usPanelW - 8)
|
||||
{
|
||||
Xpos += 8;
|
||||
}
|
||||
else if (Ypos < gstI80DevInfo.usPanelH - 16)
|
||||
{
|
||||
Xpos = 0;
|
||||
Ypos += 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
Xpos = 0;
|
||||
Ypos = 0;
|
||||
}
|
||||
}
|
||||
while (*str != 0);
|
||||
}
|
||||
|
||||
extern uint16_t bmp01[];
|
||||
|
||||
void EPD_DrawBitmap(uint16_t Xpos, uint16_t Ypos,uint16_t *bmp)
|
||||
{
|
||||
uint16_t i,j;
|
||||
uint16_t R,G,B,temp;
|
||||
double Gray;
|
||||
|
||||
for (j=0;j<412;j++)
|
||||
{
|
||||
for (i=0;i<550;i++)
|
||||
{
|
||||
temp = bmp[j*550+i];
|
||||
R = (temp >> 11)<<3;
|
||||
G = ((temp&0x07E0) >> 5)<<2;
|
||||
B = (temp&0x01F)<<3;
|
||||
Gray = (R*299 + G*587 + B*114 + 500) / 1000;
|
||||
EPD_DrawPixel(i, j,(uint8_t)Gray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EPD_DrawMatrix(uint16_t Xpos, uint16_t Ypos,uint16_t Width, uint16_t High,const uint16_t* Matrix)
|
||||
{
|
||||
uint16_t i,j,x,y;
|
||||
uint16_t R,G,B,temp;
|
||||
double Gray;
|
||||
|
||||
for (y=0,j=Ypos;y<High;y++,j++)
|
||||
{
|
||||
for (x=0,i=Xpos;x<Width;x++,i++)
|
||||
{
|
||||
temp = Matrix[y*550+x];
|
||||
R = (temp >> 11)<<3;
|
||||
G = ((temp&0x07E0) >> 5)<<2;
|
||||
B = (temp&0x001F) <<3;
|
||||
Gray = (R*299 + G*587 + B*114 + 500) / 1000;
|
||||
EPD_DrawPixel(i, j, Gray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//<2F><>ʾBMPͼƬ<CDBC><C6AC><EFBFBD>ص<EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
struct fb_var_screeninfo vinfo; // <20><>¼<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ĵ<DEB8><C4B5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t fbfd = 0; // /dev/fb0 <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t *fbp = 0; // <20>ڴ<EFBFBD>ӳ<EFBFBD><D3B3>ָ<EFBFBD><D6B8>
|
||||
uint8_t *bmp_dst_buf = NULL; // BMP Buffer
|
||||
uint8_t *bmp_src_buf = NULL; // BMP Buffer
|
||||
uint32_t bmp_width, bmp_height;
|
||||
uint8_t bmp_BitCount;
|
||||
uint32_t bytesPerLine;
|
||||
uint32_t imageSize;
|
||||
uint32_t skip;
|
||||
PIXEL palette[256];
|
||||
|
||||
static void Bitmap_format_Matrix(uint8_t *dst,uint8_t *src)
|
||||
{
|
||||
uint32_t i,j,k;
|
||||
uint8_t *psrc = src;
|
||||
uint8_t *pdst = dst;
|
||||
uint8_t *p = psrc;
|
||||
uint8_t temp;
|
||||
uint32_t count;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>bmp<6D>洢<EFBFBD>ǴӺ<C7B4><D3BA><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
||||
switch(bmp_BitCount)
|
||||
{
|
||||
case 1:
|
||||
pdst += (bmp_width * bmp_height);
|
||||
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
pdst -= bmp_width;
|
||||
count = 0;
|
||||
for (j=0;j<(bmp_width+7)/8;j++)
|
||||
{
|
||||
temp = p[j];
|
||||
|
||||
for (k=0;k<8;k++)
|
||||
{
|
||||
pdst[0]= ((temp & (0x80>>k)) >> (7-k));
|
||||
count++;
|
||||
pdst++;
|
||||
if (count == bmp_width)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
pdst -= bmp_width;
|
||||
p += bytesPerLine;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
pdst += (bmp_width * bmp_height);
|
||||
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
pdst -= bmp_width;
|
||||
count = 0;
|
||||
for (j=0;j<(bmp_width+1)/2;j++)
|
||||
{
|
||||
temp = p[j];
|
||||
pdst[0]= ((temp & 0xf0) >> 4);
|
||||
count++;
|
||||
pdst++;
|
||||
if (count == bmp_width)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
pdst[0] = temp & 0x0f;
|
||||
count++;
|
||||
pdst++;
|
||||
if (count == bmp_width)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
pdst -= bmp_width;
|
||||
p += bytesPerLine;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
pdst += (bmp_width*bmp_height);
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
p = psrc+(i+1)*bytesPerLine;
|
||||
p -= skip;
|
||||
for(j=0;j<bmp_width;j++)
|
||||
{
|
||||
pdst -= 1;
|
||||
p -= 1;
|
||||
pdst[0] = p[0];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
pdst += (bmp_width*bmp_height*2);
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
p = psrc+(i+1)*bytesPerLine;
|
||||
p -= skip;
|
||||
for(j=0;j<bmp_width;j++)
|
||||
{
|
||||
pdst -= 2;
|
||||
p -= 2;
|
||||
pdst[0] = p[1];
|
||||
pdst[1] = p[0];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
pdst += (bmp_width*bmp_height*3);
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
p = psrc+(i+1)*bytesPerLine;
|
||||
p -= skip;
|
||||
for(j=0;j<bmp_width;j++)
|
||||
{
|
||||
pdst -= 3;
|
||||
p -= 3;
|
||||
pdst[0] = p[2];
|
||||
pdst[1] = p[1];
|
||||
pdst[2] = p[0];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
pdst += (bmp_width*bmp_height*4);
|
||||
for(i=0;i<bmp_height;i++)
|
||||
{
|
||||
p = psrc+(i+1)*bmp_width*4;
|
||||
for(j=0;j<bmp_width;j++)
|
||||
{
|
||||
pdst -= 4;
|
||||
p -= 4;
|
||||
pdst[0] = p[2];
|
||||
pdst[1] = p[1];
|
||||
pdst[2] = p[0];
|
||||
pdst[3] = p[3];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawMatrix(uint16_t Xpos, uint16_t Ypos,uint16_t Width, uint16_t High,const uint8_t* Matrix)
|
||||
{
|
||||
uint16_t i,j,x,y;
|
||||
uint8_t R,G,B;
|
||||
uint8_t temp1,temp2;
|
||||
double Gray;
|
||||
|
||||
for (y=0,j=Ypos;y<High;y++,j++)
|
||||
{
|
||||
for (x=0,i=Xpos;x<Width;x++,i++)
|
||||
{
|
||||
switch(bmp_BitCount)
|
||||
{
|
||||
case 1:
|
||||
case 4:
|
||||
case 8:
|
||||
R = palette[Matrix[(y*Width+x)]].red;
|
||||
G = palette[Matrix[(y*Width+x)]].green;
|
||||
B = palette[Matrix[(y*Width+x)]].blue;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
temp1 = Matrix[(y*Width+x)*2];
|
||||
temp2 = Matrix[(y*Width+x)*2+1];
|
||||
R = (temp1 & 0x7c)<<1;
|
||||
G = (((temp1 & 0x03) << 3 ) | ((temp2&0xe0) >> 5))<<3;
|
||||
B = (temp2 & 0x1f)<<3;
|
||||
break;
|
||||
|
||||
case 24:
|
||||
R = Matrix[(y*Width+x)*3];
|
||||
G = Matrix[(y*Width+x)*3+1];
|
||||
B = Matrix[(y*Width+x)*3+2];
|
||||
break;
|
||||
|
||||
case 32:
|
||||
R = Matrix[(y*Width+x)*4];
|
||||
G = Matrix[(y*Width+x)*4+1];
|
||||
B = Matrix[(y*Width+x)*4+2];
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Gray = (R*299 + G*587 + B*114 + 500) / 1000;
|
||||
EPD_DrawPixel(i, j, Gray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t Show_bmp(uint32_t x, uint32_t y,char *path)
|
||||
{
|
||||
FILE *fp;//bmp<6D>ļ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
BITMAPFILEHEADER FileHead;
|
||||
BITMAPINFOHEADER InfoHead;
|
||||
uint32_t total_length;
|
||||
uint8_t *buf = NULL;
|
||||
uint32_t ret = -1;
|
||||
|
||||
fp = fopen(path,"rb");
|
||||
if (fp == NULL)
|
||||
{
|
||||
return(-1);
|
||||
}
|
||||
|
||||
ret = fread(&FileHead, sizeof(BITMAPFILEHEADER),1, fp);
|
||||
if (ret != 1)
|
||||
{
|
||||
printf("Read header error!\n");
|
||||
fclose(fp);
|
||||
return(-2);
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>bmpͼ<70><CDBC>
|
||||
if (FileHead.cfType != 0x4D42)//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͣ<EFBFBD>"BM"(0x4D42)
|
||||
{
|
||||
printf("It's not a BMP file\n");
|
||||
fclose(fp);
|
||||
return(-3);
|
||||
}
|
||||
|
||||
printf("\n*****************************************\n");
|
||||
printf("BMP_cfSize:%d \n", FileHead.cfSize);
|
||||
printf("BMP_cfoffBits:%d \n", FileHead.cfoffBits);
|
||||
|
||||
ret = fread((char *)&InfoHead, sizeof(BITMAPINFOHEADER),1, fp);
|
||||
if (ret != 1)
|
||||
{
|
||||
printf("Read infoheader error!\n");
|
||||
fclose(fp);
|
||||
return(-4);
|
||||
}
|
||||
|
||||
printf("BMP_ciSize:%d \n", InfoHead.ciSize);
|
||||
printf("BMP_ciWidth:%d \n", InfoHead.ciWidth);
|
||||
printf("BMP_ciHeight:%d \n", InfoHead.ciHeight);
|
||||
printf("BMP_ciPlanes:%x \n", InfoHead.ciPlanes);
|
||||
printf("BMP_ciBitCount:%x \n", InfoHead.ciBitCount);
|
||||
printf("BMP_ciCompress:%x \n", InfoHead.ciCompress);
|
||||
printf("BMP_ciSizeImage:%x \n", InfoHead.ciSizeImage);
|
||||
printf("BMP_ciXPelsPerMeter:%x \n", InfoHead.ciXPelsPerMeter);
|
||||
printf("BMP_ciYPelsPerMeter:%x \n", InfoHead.ciYPelsPerMeter);
|
||||
printf("BMP_ciClrUsed:%x \n", InfoHead.ciClrUsed);
|
||||
printf("BMP_ciClrImportant:%x \n", InfoHead.ciClrImportant);
|
||||
printf("*****************************************\n\n");
|
||||
|
||||
total_length = FileHead.cfSize-FileHead.cfoffBits;
|
||||
bytesPerLine=((InfoHead.ciWidth*InfoHead.ciBitCount+31)>>5)<<2;
|
||||
imageSize=bytesPerLine*InfoHead.ciHeight;
|
||||
skip=(4-((InfoHead.ciWidth*InfoHead.ciBitCount)>>3))&3;
|
||||
|
||||
printf("total_length:%d,%d\n", InfoHead.ciSizeImage,FileHead.cfSize-FileHead.cfoffBits);
|
||||
printf("bytesPerLine = %d\n", bytesPerLine);
|
||||
printf("imageSize = %d\n", imageSize);
|
||||
printf("skip = %d\n", skip);
|
||||
|
||||
bmp_width = InfoHead.ciWidth;
|
||||
bmp_height = InfoHead.ciHeight;
|
||||
bmp_BitCount = InfoHead.ciBitCount;
|
||||
|
||||
bmp_src_buf = (uint8_t*)calloc(1,total_length);
|
||||
if(bmp_src_buf == NULL){
|
||||
printf("Load > malloc bmp out of memory!\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
bmp_dst_buf = (uint8_t*)calloc(1,total_length);
|
||||
if(bmp_dst_buf == NULL){
|
||||
printf("Load > malloc bmp out of memory!\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
fseek(fp, FileHead.cfoffBits, SEEK_SET);
|
||||
|
||||
//ÿ<><C3BF><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||
buf = bmp_src_buf;
|
||||
while ((ret = fread(buf,1,total_length,fp)) >= 0)
|
||||
{
|
||||
if (ret == 0)
|
||||
{
|
||||
usleep(100);
|
||||
continue;
|
||||
}
|
||||
buf = ((uint8_t*)buf) + ret;
|
||||
total_length = total_length - ret;
|
||||
if(total_length == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
switch(bmp_BitCount)
|
||||
{
|
||||
case 1:
|
||||
fseek(fp, 54, SEEK_SET);
|
||||
ret = fread(palette,1,4*2,fp);
|
||||
if (ret != 8)
|
||||
{
|
||||
printf("Error: fread != 8\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
bmp_dst_buf = (uint8_t*)calloc(1,InfoHead.ciWidth * InfoHead.ciHeight);
|
||||
if(bmp_dst_buf == NULL)
|
||||
{
|
||||
printf("Load > malloc bmp out of memory!\n");
|
||||
return -5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
fseek(fp, 54, SEEK_SET);
|
||||
ret = fread(palette,1,4*16,fp);
|
||||
if (ret != 64)
|
||||
{
|
||||
printf("Error: fread != 64\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
bmp_dst_buf = (uint8_t*)calloc(1,InfoHead.ciWidth * InfoHead.ciHeight);
|
||||
if(bmp_dst_buf == NULL)
|
||||
{
|
||||
printf("Load > malloc bmp out of memory!\n");
|
||||
return -5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 8:
|
||||
fseek(fp, 54, SEEK_SET);
|
||||
|
||||
ret = fread(palette,1,4*256,fp);
|
||||
|
||||
if (ret != 1024)
|
||||
{
|
||||
printf("Error: fread != 1024\n");
|
||||
return -5;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Bitmap_format_Matrix(bmp_dst_buf,bmp_src_buf);
|
||||
DrawMatrix(x, y,InfoHead.ciWidth, InfoHead.ciHeight, bmp_dst_buf);
|
||||
|
||||
fclose(fp);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
73
inkycal/display/drivers/9_in_7_drivers/IT8951/miniGUI.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef _miniGUI_H_
|
||||
#define _miniGUI_H_
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/fb.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include "IT8951.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t X;
|
||||
uint16_t Y;
|
||||
}Point, *pPoint;
|
||||
|
||||
//14byte<74>ļ<EFBFBD>ͷ
|
||||
typedef struct
|
||||
{
|
||||
uint16_t cfType;//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͣ<EFBFBD>"BM"(0x4D42)
|
||||
uint32_t cfSize;//<2F>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ֽڣ<D6BD>
|
||||
uint32_t cfReserved;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ0
|
||||
uint32_t cfoffBits;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><CDB7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD>
|
||||
}__attribute__((packed)) BITMAPFILEHEADER;
|
||||
//__attribute__((packed))<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ṹ<EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//40byte<74><65>Ϣͷ
|
||||
typedef struct
|
||||
{
|
||||
uint32_t ciSize;//40
|
||||
uint32_t ciWidth;//<2F><><EFBFBD><EFBFBD>
|
||||
uint32_t ciHeight;//<2F>߶<EFBFBD>
|
||||
uint16_t ciPlanes;//Ŀ<><C4BF><EFBFBD>豸<EFBFBD><E8B1B8>λƽ<CEBB><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ1
|
||||
uint16_t ciBitCount;//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>λ<EFBFBD><CEBB>
|
||||
uint32_t ciCompress;//ѹ<><D1B9>˵<EFBFBD><CBB5>
|
||||
uint32_t ciSizeImage;//<2F><><EFBFBD>ֽڱ<D6BD>ʾ<EFBFBD><CABE>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
||||
uint32_t ciXPelsPerMeter;//Ŀ<><C4BF><EFBFBD>豸<EFBFBD><E8B1B8>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>
|
||||
uint32_t ciYPelsPerMeter;//Ŀ<><C4BF><EFBFBD>豸<EFBFBD>Ĵ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>
|
||||
uint32_t ciClrUsed;//λͼʹ<CDBC>õ<EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>
|
||||
uint32_t ciClrImportant;//ָ<><D6B8><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>0ʱ<30><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ҫ
|
||||
}__attribute__((packed)) BITMAPINFOHEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t blue;
|
||||
uint8_t green;
|
||||
uint8_t red;
|
||||
uint8_t reserved;
|
||||
}__attribute__((packed)) PIXEL;//<2F><>ɫģʽRGB
|
||||
|
||||
#define ABS(X) ((X) > 0 ? (X) : -(X))
|
||||
|
||||
void EPD_Clear(uint8_t Color);
|
||||
void EPD_DrawPixel(uint16_t x0,uint16_t y0,uint8_t color);
|
||||
void EPD_DrawLine(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint8_t color);
|
||||
void EPD_DrawRect(uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height,uint8_t color);
|
||||
void EPD_DrawCircle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius,uint8_t color);
|
||||
void EPD_DrawPolygon(pPoint Points,uint16_t PointCount,uint8_t color);
|
||||
void EPD_DrawEllipse(uint16_t Xpos,uint16_t Ypos,uint16_t XRadius,uint16_t YRadius,uint8_t color);
|
||||
void EPD_FillRect(uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height,uint8_t color);
|
||||
void EPD_FillCircle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius,uint8_t color);
|
||||
void EPD_PutChar(uint16_t Xpos,uint16_t Ypos,uint8_t ASCI,uint8_t charColor,uint8_t bkColor);
|
||||
void EPD_Text(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint8_t Color,uint8_t bkColor);
|
||||
void EPD_DrawBitmap(uint16_t Xpos, uint16_t Ypos,uint16_t *bmp);
|
||||
void EPD_DrawMatrix(uint16_t Xpos, uint16_t Ypos,uint16_t Width, uint16_t High,const uint16_t* Matrix);
|
||||
uint8_t Show_bmp(uint32_t x, uint32_t y,char *path);
|
||||
|
||||
|
||||
|
||||
#endif
|
339
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/COPYING
Normal file
@@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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 2 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
@@ -0,0 +1 @@
|
||||
See bcm28335.h for complete revision history
|
365
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/INSTALL
Normal file
@@ -0,0 +1,365 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
786
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/Makefile
Normal file
@@ -0,0 +1,786 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/bcm2835
|
||||
pkgincludedir = $(includedir)/bcm2835
|
||||
pkglibdir = $(libdir)/bcm2835
|
||||
pkglibexecdir = $(libexecdir)/bcm2835
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_$(V))
|
||||
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir distdir-am dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
|
||||
COPYING ChangeLog INSTALL NEWS README compile config.guess \
|
||||
config.sub depcomp install-sh ltmain.sh missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing aclocal-1.16
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AUTOCONF = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing automake-1.16
|
||||
AWK = mawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPPFLAGS =
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DOXYGEN =
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EXEEXT =
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBOBJS =
|
||||
LIBS = -lrt
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing makeinfo
|
||||
MKDIR_P = /bin/mkdir -p
|
||||
OBJEXT = o
|
||||
PACKAGE = bcm2835
|
||||
PACKAGE_BUGREPORT = mikem@airspayce.com
|
||||
PACKAGE_NAME = bcm2835
|
||||
PACKAGE_STRING = bcm2835 1.58
|
||||
PACKAGE_TARNAME = bcm2835
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION = 1.58
|
||||
PATH_SEPARATOR = :
|
||||
RANLIB = ranlib
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP =
|
||||
VERSION = 1.58
|
||||
abs_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
abs_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
abs_top_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
abs_top_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
ac_ct_CC = gcc
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build_alias =
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host_alias =
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = $(MKDIR_P)
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
runstatedir = ${localstatedir}/run
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
top_build_prefix =
|
||||
top_builddir = .
|
||||
top_srcdir = .
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = src doc
|
||||
CLEANFILES = *~
|
||||
EXTRA_DIST = examples/blink/blink.c \
|
||||
examples/input/input.c \
|
||||
examples/event/event.c \
|
||||
examples/spi/spi.c \
|
||||
examples/spin/spin.c \
|
||||
examples/pwm/pwm.c \
|
||||
examples/i2c/i2c.c \
|
||||
examples/gpio/gpio.c \
|
||||
examples/spiram/spiram_test.c \
|
||||
examples/spiram/spiram.c \
|
||||
examples/spiram/spiram.h
|
||||
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
|
||||
distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
upload:
|
||||
rsync -avz bcm2835-1.58.tar.gz doc/html/ www.airspayce.com:public_html/mikem/bcm2835
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@@ -0,0 +1,19 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = src doc
|
||||
CLEANFILES = *~
|
||||
EXTRA_DIST = examples/blink/blink.c \
|
||||
examples/input/input.c \
|
||||
examples/event/event.c \
|
||||
examples/spi/spi.c \
|
||||
examples/spin/spin.c \
|
||||
examples/pwm/pwm.c \
|
||||
examples/i2c/i2c.c \
|
||||
examples/gpio/gpio.c \
|
||||
examples/spiram/spiram_test.c \
|
||||
examples/spiram/spiram.c \
|
||||
examples/spiram/spiram.h
|
||||
|
||||
upload:
|
||||
rsync -avz @PACKAGE_TARNAME@-@VERSION@.tar.gz doc/html/ www.airspayce.com:public_html/mikem/@PACKAGE_NAME@
|
||||
|
||||
|
786
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/Makefile.in
Normal file
@@ -0,0 +1,786 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir distdir-am dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
|
||||
COPYING ChangeLog INSTALL NEWS README compile config.guess \
|
||||
config.sub depcomp install-sh ltmain.sh missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = src doc
|
||||
CLEANFILES = *~
|
||||
EXTRA_DIST = examples/blink/blink.c \
|
||||
examples/input/input.c \
|
||||
examples/event/event.c \
|
||||
examples/spi/spi.c \
|
||||
examples/spin/spin.c \
|
||||
examples/pwm/pwm.c \
|
||||
examples/i2c/i2c.c \
|
||||
examples/gpio/gpio.c \
|
||||
examples/spiram/spiram_test.c \
|
||||
examples/spiram/spiram.c \
|
||||
examples/spiram/spiram.h
|
||||
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
|
||||
distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
upload:
|
||||
rsync -avz @PACKAGE_TARNAME@-@VERSION@.tar.gz doc/html/ www.airspayce.com:public_html/mikem/@PACKAGE_NAME@
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@@ -0,0 +1,5 @@
|
||||
This is a C library for Raspberry Pi (RPi). It provides access to
|
||||
GPIO and other IO functions on the Broadcom BCM 2835 chip.
|
||||
allowing access to the
|
||||
26 pin ISE plug on the RPi board so you can control and interface with various
|
||||
external devices.
|
1201
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/aclocal.m4
vendored
Normal file
348
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/compile
Normal file
@@ -0,0 +1,348 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# 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 2, 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
1511
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/config.guess
vendored
Normal file
29
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/config.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the `rt' library (-lrt). */
|
||||
#define HAVE_LIBRT 1
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "bcm2835"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "mikem@airspayce.com"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "bcm2835"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "bcm2835 1.58"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "bcm2835"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.58"
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "1.58"
|
@@ -0,0 +1,28 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the `rt' library (-lrt). */
|
||||
#undef HAVE_LIBRT
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
357
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/config.log
Normal file
@@ -0,0 +1,357 @@
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by bcm2835 configure 1.58, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ ./configure
|
||||
|
||||
## --------- ##
|
||||
## Platform. ##
|
||||
## --------- ##
|
||||
|
||||
hostname = inkydev
|
||||
uname -m = armv7l
|
||||
uname -r = 4.19.97-v7l+
|
||||
uname -s = Linux
|
||||
uname -v = #1294 SMP Thu Jan 30 13:21:14 GMT 2020
|
||||
|
||||
/usr/bin/uname -p = unknown
|
||||
/bin/uname -X = unknown
|
||||
|
||||
/bin/arch = unknown
|
||||
/usr/bin/arch -k = unknown
|
||||
/usr/convex/getsysinfo = unknown
|
||||
/usr/bin/hostinfo = unknown
|
||||
/bin/machine = unknown
|
||||
/usr/bin/oslevel = unknown
|
||||
/bin/universe = unknown
|
||||
|
||||
PATH: /home/pi/.local/bin
|
||||
PATH: /usr/local/sbin
|
||||
PATH: /usr/local/bin
|
||||
PATH: /usr/sbin
|
||||
PATH: /usr/bin
|
||||
PATH: /sbin
|
||||
PATH: /bin
|
||||
PATH: /usr/local/games
|
||||
PATH: /usr/games
|
||||
|
||||
|
||||
## ----------- ##
|
||||
## Core tests. ##
|
||||
## ----------- ##
|
||||
|
||||
configure:1892: checking for a BSD-compatible install
|
||||
configure:1960: result: /usr/bin/install -c
|
||||
configure:1971: checking whether build environment is sane
|
||||
configure:2026: result: yes
|
||||
configure:2175: checking for a thread-safe mkdir -p
|
||||
configure:2214: result: /bin/mkdir -p
|
||||
configure:2221: checking for gawk
|
||||
configure:2251: result: no
|
||||
configure:2221: checking for mawk
|
||||
configure:2237: found /usr/bin/mawk
|
||||
configure:2248: result: mawk
|
||||
configure:2259: checking whether make sets $(MAKE)
|
||||
configure:2281: result: yes
|
||||
configure:2310: checking whether make supports nested variables
|
||||
configure:2327: result: yes
|
||||
configure:2457: checking whether make supports the include directive
|
||||
configure:2472: make -f confmf.GNU && cat confinc.out
|
||||
this is the am__doit target
|
||||
configure:2475: $? = 0
|
||||
configure:2494: result: yes (GNU style)
|
||||
configure:2564: checking for gcc
|
||||
configure:2580: found /usr/bin/gcc
|
||||
configure:2591: result: gcc
|
||||
configure:2820: checking for C compiler version
|
||||
configure:2829: gcc --version >&5
|
||||
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
|
||||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure:2840: $? = 0
|
||||
configure:2829: gcc -v >&5
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=gcc
|
||||
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper
|
||||
Target: arm-linux-gnueabihf
|
||||
Configured with: ../src/configure -v --with-pkgversion='Raspbian 8.3.0-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
|
||||
Thread model: posix
|
||||
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1)
|
||||
configure:2840: $? = 0
|
||||
configure:2829: gcc -V >&5
|
||||
gcc: error: unrecognized command line option '-V'
|
||||
gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:2840: $? = 1
|
||||
configure:2829: gcc -qversion >&5
|
||||
gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
|
||||
gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:2840: $? = 1
|
||||
configure:2860: checking whether the C compiler works
|
||||
configure:2882: gcc conftest.c >&5
|
||||
configure:2886: $? = 0
|
||||
configure:2934: result: yes
|
||||
configure:2937: checking for C compiler default output file name
|
||||
configure:2939: result: a.out
|
||||
configure:2945: checking for suffix of executables
|
||||
configure:2952: gcc -o conftest conftest.c >&5
|
||||
configure:2956: $? = 0
|
||||
configure:2978: result:
|
||||
configure:3000: checking whether we are cross compiling
|
||||
configure:3008: gcc -o conftest conftest.c >&5
|
||||
configure:3012: $? = 0
|
||||
configure:3019: ./conftest
|
||||
configure:3023: $? = 0
|
||||
configure:3011: result: no
|
||||
configure:3016: checking for suffix of object files
|
||||
configure:3038: gcc -c conftest.c >&5
|
||||
configure:3042: $? = 0
|
||||
configure:3063: result: o
|
||||
configure:3067: checking whether we are using the GNU C compiler
|
||||
configure:3086: gcc -c conftest.c >&5
|
||||
configure:3086: $? = 0
|
||||
configure:3095: result: yes
|
||||
configure:3104: checking whether gcc accepts -g
|
||||
configure:3124: gcc -c -g conftest.c >&5
|
||||
configure:3124: $? = 0
|
||||
configure:3165: result: yes
|
||||
configure:3182: checking for gcc option to accept ISO C89
|
||||
configure:3245: gcc -c -g -O2 conftest.c >&5
|
||||
configure:3245: $? = 0
|
||||
configure:3258: result: none needed
|
||||
configure:3283: checking whether gcc understands -c and -o together
|
||||
configure:3305: gcc -c conftest.c -o conftest2.o
|
||||
configure:3308: $? = 0
|
||||
configure:3305: gcc -c conftest.c -o conftest2.o
|
||||
configure:3308: $? = 0
|
||||
configure:3320: result: yes
|
||||
configure:3339: checking dependency style of gcc
|
||||
configure:3450: result: gcc3
|
||||
configure:3466: checking for clock_gettime in -lrt
|
||||
configure:3491: gcc -o conftest -g -O2 conftest.c -lrt >&5
|
||||
configure:3491: $? = 0
|
||||
configure:3500: result: yes
|
||||
configure:3515: checking for doxygen
|
||||
configure:3545: result: no
|
||||
configure:3554: WARNING: Doxygen not found - continuing without Doxygen support
|
||||
configure:3600: checking for ranlib
|
||||
configure:3616: found /usr/bin/ranlib
|
||||
configure:3627: result: ranlib
|
||||
configure:3697: checking for gcc
|
||||
configure:3724: result: gcc
|
||||
configure:3953: checking for C compiler version
|
||||
configure:3962: gcc --version >&5
|
||||
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
|
||||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure:3973: $? = 0
|
||||
configure:3962: gcc -v >&5
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=gcc
|
||||
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper
|
||||
Target: arm-linux-gnueabihf
|
||||
Configured with: ../src/configure -v --with-pkgversion='Raspbian 8.3.0-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
|
||||
Thread model: posix
|
||||
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1)
|
||||
configure:3973: $? = 0
|
||||
configure:3962: gcc -V >&5
|
||||
gcc: error: unrecognized command line option '-V'
|
||||
gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:3973: $? = 1
|
||||
configure:3962: gcc -qversion >&5
|
||||
gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
|
||||
gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:3973: $? = 1
|
||||
configure:3977: checking whether we are using the GNU C compiler
|
||||
configure:4005: result: yes
|
||||
configure:4014: checking whether gcc accepts -g
|
||||
configure:4075: result: yes
|
||||
configure:4092: checking for gcc option to accept ISO C89
|
||||
configure:4168: result: none needed
|
||||
configure:4193: checking whether gcc understands -c and -o together
|
||||
configure:4230: result: yes
|
||||
configure:4249: checking dependency style of gcc
|
||||
configure:4360: result: gcc3
|
||||
configure:4490: checking that generated files are newer than configure
|
||||
configure:4496: result: done
|
||||
configure:4527: creating ./config.status
|
||||
|
||||
## ---------------------- ##
|
||||
## Running config.status. ##
|
||||
## ---------------------- ##
|
||||
|
||||
This file was extended by bcm2835 config.status 1.58, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES =
|
||||
CONFIG_HEADERS =
|
||||
CONFIG_LINKS =
|
||||
CONFIG_COMMANDS =
|
||||
$ ./config.status
|
||||
|
||||
on inkydev
|
||||
|
||||
config.status:844: creating Makefile
|
||||
config.status:844: creating src/Makefile
|
||||
config.status:844: creating doc/Makefile
|
||||
config.status:844: creating config.h
|
||||
config.status:1073: executing depfiles commands
|
||||
config.status:1150: cd src && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles
|
||||
config.status:1155: $? = 0
|
||||
|
||||
## ---------------- ##
|
||||
## Cache variables. ##
|
||||
## ---------------- ##
|
||||
|
||||
ac_cv_c_compiler_gnu=yes
|
||||
ac_cv_env_CC_set=
|
||||
ac_cv_env_CC_value=
|
||||
ac_cv_env_CFLAGS_set=
|
||||
ac_cv_env_CFLAGS_value=
|
||||
ac_cv_env_CPPFLAGS_set=
|
||||
ac_cv_env_CPPFLAGS_value=
|
||||
ac_cv_env_LDFLAGS_set=
|
||||
ac_cv_env_LDFLAGS_value=
|
||||
ac_cv_env_LIBS_set=
|
||||
ac_cv_env_LIBS_value=
|
||||
ac_cv_env_build_alias_set=
|
||||
ac_cv_env_build_alias_value=
|
||||
ac_cv_env_host_alias_set=
|
||||
ac_cv_env_host_alias_value=
|
||||
ac_cv_env_target_alias_set=
|
||||
ac_cv_env_target_alias_value=
|
||||
ac_cv_lib_rt_clock_gettime=yes
|
||||
ac_cv_objext=o
|
||||
ac_cv_path_install='/usr/bin/install -c'
|
||||
ac_cv_path_mkdir=/bin/mkdir
|
||||
ac_cv_prog_AWK=mawk
|
||||
ac_cv_prog_ac_ct_CC=gcc
|
||||
ac_cv_prog_ac_ct_RANLIB=ranlib
|
||||
ac_cv_prog_cc_c89=
|
||||
ac_cv_prog_cc_g=yes
|
||||
ac_cv_prog_make_make_set=yes
|
||||
am_cv_CC_dependencies_compiler_type=gcc3
|
||||
am_cv_make_support_nested_variables=yes
|
||||
am_cv_prog_cc_c_o=yes
|
||||
|
||||
## ----------------- ##
|
||||
## Output variables. ##
|
||||
## ----------------- ##
|
||||
|
||||
ACLOCAL='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing aclocal-1.16'
|
||||
AMDEPBACKSLASH='\'
|
||||
AMDEP_FALSE='#'
|
||||
AMDEP_TRUE=''
|
||||
AMTAR='$${TAR-tar}'
|
||||
AM_BACKSLASH='\'
|
||||
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
|
||||
AM_DEFAULT_VERBOSITY='1'
|
||||
AM_V='$(V)'
|
||||
AUTOCONF='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoconf'
|
||||
AUTOHEADER='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoheader'
|
||||
AUTOMAKE='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing automake-1.16'
|
||||
AWK='mawk'
|
||||
CC='gcc'
|
||||
CCDEPMODE='depmode=gcc3'
|
||||
CFLAGS='-g -O2'
|
||||
CPPFLAGS=''
|
||||
CYGPATH_W='echo'
|
||||
DEFS='-DHAVE_CONFIG_H'
|
||||
DEPDIR='.deps'
|
||||
DOXYGEN=''
|
||||
ECHO_C=''
|
||||
ECHO_N='-n'
|
||||
ECHO_T=''
|
||||
EXEEXT=''
|
||||
HAVE_DOXYGEN_FALSE=''
|
||||
HAVE_DOXYGEN_TRUE='#'
|
||||
INSTALL_DATA='${INSTALL} -m 644'
|
||||
INSTALL_PROGRAM='${INSTALL}'
|
||||
INSTALL_SCRIPT='${INSTALL}'
|
||||
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
|
||||
LDFLAGS=''
|
||||
LIBOBJS=''
|
||||
LIBS='-lrt '
|
||||
LTLIBOBJS=''
|
||||
MAKEINFO='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing makeinfo'
|
||||
MKDIR_P='/bin/mkdir -p'
|
||||
OBJEXT='o'
|
||||
PACKAGE='bcm2835'
|
||||
PACKAGE_BUGREPORT='mikem@airspayce.com'
|
||||
PACKAGE_NAME='bcm2835'
|
||||
PACKAGE_STRING='bcm2835 1.58'
|
||||
PACKAGE_TARNAME='bcm2835'
|
||||
PACKAGE_URL=''
|
||||
PACKAGE_VERSION='1.58'
|
||||
PATH_SEPARATOR=':'
|
||||
RANLIB='ranlib'
|
||||
SET_MAKE=''
|
||||
SHELL='/bin/bash'
|
||||
STRIP=''
|
||||
VERSION='1.58'
|
||||
ac_ct_CC='gcc'
|
||||
am__EXEEXT_FALSE=''
|
||||
am__EXEEXT_TRUE='#'
|
||||
am__fastdepCC_FALSE='#'
|
||||
am__fastdepCC_TRUE=''
|
||||
am__include='include'
|
||||
am__isrc=''
|
||||
am__leading_dot='.'
|
||||
am__nodep='_no'
|
||||
am__quote=''
|
||||
am__tar='$${TAR-tar} chof - "$$tardir"'
|
||||
am__untar='$${TAR-tar} xf -'
|
||||
bindir='${exec_prefix}/bin'
|
||||
build_alias=''
|
||||
datadir='${datarootdir}'
|
||||
datarootdir='${prefix}/share'
|
||||
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
||||
dvidir='${docdir}'
|
||||
exec_prefix='${prefix}'
|
||||
host_alias=''
|
||||
htmldir='${docdir}'
|
||||
includedir='${prefix}/include'
|
||||
infodir='${datarootdir}/info'
|
||||
install_sh='${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/install-sh'
|
||||
libdir='${exec_prefix}/lib'
|
||||
libexecdir='${exec_prefix}/libexec'
|
||||
localedir='${datarootdir}/locale'
|
||||
localstatedir='${prefix}/var'
|
||||
mandir='${datarootdir}/man'
|
||||
mkdir_p='$(MKDIR_P)'
|
||||
oldincludedir='/usr/include'
|
||||
pdfdir='${docdir}'
|
||||
prefix='/usr/local'
|
||||
program_transform_name='s,x,x,'
|
||||
psdir='${docdir}'
|
||||
runstatedir='${localstatedir}/run'
|
||||
sbindir='${exec_prefix}/sbin'
|
||||
sharedstatedir='${prefix}/com'
|
||||
sysconfdir='${prefix}/etc'
|
||||
target_alias=''
|
||||
|
||||
## ----------- ##
|
||||
## confdefs.h. ##
|
||||
## ----------- ##
|
||||
|
||||
/* confdefs.h */
|
||||
#define PACKAGE_NAME "bcm2835"
|
||||
#define PACKAGE_TARNAME "bcm2835"
|
||||
#define PACKAGE_VERSION "1.58"
|
||||
#define PACKAGE_STRING "bcm2835 1.58"
|
||||
#define PACKAGE_BUGREPORT "mikem@airspayce.com"
|
||||
#define PACKAGE_URL ""
|
||||
#define PACKAGE "bcm2835"
|
||||
#define VERSION "1.58"
|
||||
#define HAVE_LIBRT 1
|
||||
|
||||
configure: exit 0
|
1183
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/config.status
Normal file
1705
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/config.sub
vendored
Normal file
5887
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/configure
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
dnl -*-autoconf-*-
|
||||
dnl bcm2835: Autoconf script
|
||||
dnl
|
||||
dnl $Id: configure.in,v 1.1 2012/12/01 22:56:52 mikem Exp mikem $
|
||||
dnl (C) 2012 Mike McCauley (mikem@airspayce.com)
|
||||
|
||||
dnl Dont forget to update BCM2835_VERSION and .tar.gz in bcm2835.h
|
||||
dnl and the zip file.
|
||||
AC_INIT([bcm2835], [1.58], [mikem@airspayce.com])
|
||||
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AM_INIT_AUTOMAKE()
|
||||
AC_CHECK_LIB([rt], [clock_gettime])
|
||||
AC_CHECK_PROGS([DOXYGEN], [doxygen])
|
||||
if test -z "$DOXYGEN";
|
||||
then AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])
|
||||
fi
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_CC
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
|
||||
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([doc/Doxyfile])])
|
||||
AC_OUTPUT(Makefile src/Makefile doc/Makefile)
|
630
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/depcomp
Normal file
@@ -0,0 +1,630 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
|
||||
# Software Foundation, Inc.
|
||||
|
||||
# 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 2, 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/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u="sed s,\\\\\\\\,/,g"
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add `dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mechanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.o.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
tmpdepfile4=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
1757
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/doc/Doxyfile.in
Normal file
413
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/doc/Makefile
Normal file
@@ -0,0 +1,413 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# doc/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/bcm2835
|
||||
pkgincludedir = $(includedir)/bcm2835
|
||||
pkglibdir = $(libdir)/bcm2835
|
||||
pkglibexecdir = $(libexecdir)/bcm2835
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = Doxyfile
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_$(V))
|
||||
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing aclocal-1.16
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AUTOCONF = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing automake-1.16
|
||||
AWK = mawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPPFLAGS =
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DOXYGEN =
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EXEEXT =
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBOBJS =
|
||||
LIBS = -lrt
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing makeinfo
|
||||
MKDIR_P = /bin/mkdir -p
|
||||
OBJEXT = o
|
||||
PACKAGE = bcm2835
|
||||
PACKAGE_BUGREPORT = mikem@airspayce.com
|
||||
PACKAGE_NAME = bcm2835
|
||||
PACKAGE_STRING = bcm2835 1.58
|
||||
PACKAGE_TARNAME = bcm2835
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION = 1.58
|
||||
PATH_SEPARATOR = :
|
||||
RANLIB = ranlib
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP =
|
||||
VERSION = 1.58
|
||||
abs_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/doc
|
||||
abs_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/doc
|
||||
abs_top_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
abs_top_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
ac_ct_CC = gcc
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build_alias =
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host_alias =
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = $(MKDIR_P)
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
runstatedir = ${localstatedir}/run
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
top_build_prefix = ../
|
||||
top_builddir = ..
|
||||
top_srcdir = ..
|
||||
#CLEANFILES = doxyfile.stamp *~
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
#Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
|
||||
# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-local:
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean-local:
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-local cscopelist-am ctags-am distclean distclean-generic \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
#doxyfile.stamp: ../src/bcm2835.h
|
||||
# $(DOXYGEN) Doxyfile
|
||||
# echo Timestamp > doxyfile.stamp
|
||||
|
||||
#all-local: doxyfile.stamp
|
||||
|
||||
#clean-local:
|
||||
# rm -rf html
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@@ -0,0 +1,13 @@
|
||||
if HAVE_DOXYGEN
|
||||
|
||||
doxyfile.stamp: ../src/bcm2835.h
|
||||
$(DOXYGEN) Doxyfile
|
||||
echo Timestamp > doxyfile.stamp
|
||||
|
||||
CLEANFILES = doxyfile.stamp *~
|
||||
|
||||
all-local: doxyfile.stamp
|
||||
|
||||
clean-local:
|
||||
rm -rf html
|
||||
endif
|
@@ -0,0 +1,413 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = Doxyfile
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@HAVE_DOXYGEN_TRUE@CLEANFILES = doxyfile.stamp *~
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
@HAVE_DOXYGEN_TRUE@Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
|
||||
@HAVE_DOXYGEN_TRUE@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
@HAVE_DOXYGEN_FALSE@all-local:
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
@HAVE_DOXYGEN_FALSE@clean-local:
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-local cscopelist-am ctags-am distclean distclean-generic \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@doxyfile.stamp: ../src/bcm2835.h
|
||||
@HAVE_DOXYGEN_TRUE@ $(DOXYGEN) Doxyfile
|
||||
@HAVE_DOXYGEN_TRUE@ echo Timestamp > doxyfile.stamp
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@all-local: doxyfile.stamp
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@clean-local:
|
||||
@HAVE_DOXYGEN_TRUE@ rm -rf html
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@@ -0,0 +1,55 @@
|
||||
// blink.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Blinks a pin on an off every 0.5 secs
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o blink blink.c -l bcm2835
|
||||
// sudo ./blink
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o blink -I ../../src ../../src/bcm2835.c blink.c
|
||||
// sudo ./blink
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2011 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17)
|
||||
#define PIN RPI_GPIO_P1_11
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// If you call this, it will not actually access the GPIO
|
||||
// Use for testing
|
||||
// bcm2835_set_debug(1);
|
||||
|
||||
if (!bcm2835_init())
|
||||
return 1;
|
||||
|
||||
// Set the pin to be an output
|
||||
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
|
||||
|
||||
// Blink
|
||||
while (1)
|
||||
{
|
||||
// Turn it on
|
||||
bcm2835_gpio_write(PIN, HIGH);
|
||||
|
||||
// wait a bit
|
||||
bcm2835_delay(500);
|
||||
|
||||
// turn it off
|
||||
bcm2835_gpio_write(PIN, LOW);
|
||||
|
||||
// wait a bit
|
||||
bcm2835_delay(500);
|
||||
}
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,57 @@
|
||||
// event.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Event detection of an input pin
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o event event.c -l bcm2835
|
||||
// sudo ./event
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o event -I ../../src ../../src/bcm2835.c event.c
|
||||
// sudo ./event
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2011 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Input on RPi pin GPIO 15
|
||||
#define PIN RPI_GPIO_P1_15
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// If you call this, it will not actually access the GPIO
|
||||
// Use for testing
|
||||
// bcm2835_set_debug(1);
|
||||
|
||||
if (!bcm2835_init())
|
||||
return 1;
|
||||
|
||||
// Set RPI pin P1-15 to be an input
|
||||
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);
|
||||
// with a pullup
|
||||
bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);
|
||||
// And a low detect enable
|
||||
bcm2835_gpio_len(PIN);
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (bcm2835_gpio_eds(PIN))
|
||||
{
|
||||
// Now clear the eds flag by setting it to 1
|
||||
bcm2835_gpio_set_eds(PIN);
|
||||
printf("low event detect for pin 15\n");
|
||||
}
|
||||
|
||||
// wait a bit
|
||||
delay(500);
|
||||
}
|
||||
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,346 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* gpio.c
|
||||
*
|
||||
* Copyright (c) 2013 Shahrooz Shahparnia
|
||||
*
|
||||
* Description:
|
||||
* gpio is a command-line utility for executing gpio commands with the
|
||||
* Broadcom bcm2835. It was developed and tested on a Raspberry Pi single-board
|
||||
* computer model B. The utility is based on the bcm2835 C library developed
|
||||
* by Mike McCauley of Open System Consultants, http://www.open.com.au/mikem/bcm2835/.
|
||||
*
|
||||
* Invoking "gpio" results in a read, set of clear of a GPIO.
|
||||
* Options include GPIO read/set/clear
|
||||
* of a single GPIO pin, enabling or disabling pull up and pull downs as well as
|
||||
* resetting all GPIOs to a default input state.
|
||||
* The command usage and command-line parameters are described below
|
||||
* in the showusage function, which prints the usage if no command-line parameters
|
||||
* are included or if there are any command-line parameter errors. Invoking gpio
|
||||
* requires root privilege.
|
||||
*
|
||||
* This file contains the main function as well as functions for displaying
|
||||
* usage and for parsing the command line.
|
||||
*
|
||||
* Open Source Licensing GNU GPLv3
|
||||
*
|
||||
* Building:
|
||||
* After installing bcm2835, you can build this
|
||||
* with something like:
|
||||
* gcc -o gpio gpio.c -l bcm2835
|
||||
* sudo ./gpio
|
||||
*
|
||||
* Or you can test it before installing with:
|
||||
* gcc -o gpio -I ../../src ../../src/bcm2835.c gpio.c
|
||||
* sudo ./gpio
|
||||
*
|
||||
*
|
||||
* History:
|
||||
* 11/10 VERSION 1.0.0: Original
|
||||
*
|
||||
* User input parsing (comparse) and showusage\
|
||||
* have been adapted from: http://ipsolutionscorp.com/raspberry-pi-spi-utility/
|
||||
* mostly to keep consistence with the spincl tool usage.
|
||||
*
|
||||
* Compile with: gcc -o gpio gpio.c bcm2835.c
|
||||
*
|
||||
* Examples:
|
||||
* Clear pin 5: sudo ./gpio -ib -dc -pn -n5
|
||||
* Reset all GPIOs to inputs and disable all pull up/downs: sudo ./gpio -ie
|
||||
* Read pin 10: sudo ./gpio -ib -dr -pn -n10
|
||||
* Read pin 10 in debug mode with verbose output: sudo ./gpio -ib -dr -pn -n10 -b
|
||||
* Read pin 10 and set pin as input with pull down: sudo ./gpio -ib -di -pd -n10
|
||||
*
|
||||
* Note: Pin numbers match the Raspberry Pie connector pin numbers
|
||||
********************************************************************************/
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define MODE_READ 0
|
||||
#define MODE_SET 1
|
||||
#define MODE_CLR 2
|
||||
#define MODE_INPUT_READ 3
|
||||
|
||||
#define PULL_UP 0
|
||||
#define PULL_DOWN 1
|
||||
#define NO_PULL 2
|
||||
|
||||
#define GPIO_BEGIN 0
|
||||
#define GPIO_END 1
|
||||
#define NO_ACTION 2
|
||||
|
||||
#define NO_PIN 40 // Some big number that's beyond the connector's pin count
|
||||
#define DEBUG_OFF 0
|
||||
#define DEBUG_ON 1
|
||||
|
||||
uint8_t init = NO_ACTION;
|
||||
uint8_t pull = NO_PULL;
|
||||
uint8_t mode = MODE_READ;
|
||||
uint8_t pin_number = NO_PIN;
|
||||
|
||||
uint8_t i, len;
|
||||
uint8_t data, pin, debug_mode = DEBUG_OFF;
|
||||
|
||||
//*******************************************************************************
|
||||
// comparse: Parse the command line and return EXIT_SUCCESS or EXIT_FAILURE
|
||||
// argc: number of command-line arguments
|
||||
// argv: array of command-line argument strings
|
||||
//*******************************************************************************
|
||||
|
||||
void gpio_reset(void);
|
||||
|
||||
int comparse(int argc, char **argv) {
|
||||
int argnum, i, xmitnum;
|
||||
|
||||
if (argc < 2) { // must have at least program name and len arguments
|
||||
// or -ie (GPIO_END) or -ib (GPIO_BEGIN)
|
||||
fprintf(stderr, "Insufficient command line arguments\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
argnum = 1;
|
||||
while (argnum < argc && argv[argnum][0] == '-') {
|
||||
|
||||
switch (argv[argnum][1]) {
|
||||
|
||||
case 'i': // GPIO init
|
||||
switch (argv[argnum][2]) {
|
||||
case 'b': init = GPIO_BEGIN; break;
|
||||
case 'e': init = GPIO_END; break;
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid init option\n", argv[argnum][2]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd': // Set/Clear/Read Mode
|
||||
switch (argv[argnum][2]) {
|
||||
case 'r': mode = MODE_READ; break;
|
||||
case 's': mode = MODE_SET; break;
|
||||
case 'c': mode = MODE_CLR; break;
|
||||
case 'i': mode = MODE_INPUT_READ; break;
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid init option\n", argv[argnum][2]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'p': // Pull up, down and no pull Mode
|
||||
switch (argv[argnum][2]) {
|
||||
case 'u': pull = PULL_UP; break;
|
||||
case 'd': pull = PULL_DOWN; break;
|
||||
case 'n': pull = NO_PULL; break;
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid init option\n", argv[argnum][2]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'n': // pin number
|
||||
pin_number = atoi(argv[argnum]+2);
|
||||
break;
|
||||
|
||||
case 'b': // debug mode
|
||||
debug_mode = DEBUG_ON;
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid option\n", argv[argnum][1]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
argnum++; // advance the argument number
|
||||
|
||||
}
|
||||
|
||||
if (argnum == argc && init != NO_ACTION) // no further arguments are needed
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
//*******************************************************************************
|
||||
// showusage: Print the usage statement and return errcode.
|
||||
//*******************************************************************************
|
||||
|
||||
int showusage(int errcode) {
|
||||
printf("gpio \n");
|
||||
printf("Usage: \n");
|
||||
printf(" gpio [options]\n");
|
||||
printf("\n");
|
||||
printf(" Invoking gpio to set or reset a GPIO, enable disable pull up or pull down. Initialize or release a GPIO.\n");
|
||||
printf("\n");
|
||||
printf(" The following are the options, which must be a single letter\n");
|
||||
printf(" preceded by a '-' and followed by another character.\n");
|
||||
printf(" -ix where x is the GPIO init option, b[egin] or e[nd]\n");
|
||||
printf(" The begin option must be executed before any transfer can happen.\n");
|
||||
printf(" The end option will return the GPIO to inputs and turn off all pull up and pull downs.\n");
|
||||
printf(" It may be included with a transfer.\n");
|
||||
printf(" -dx where x is 'c' for clear, 's' is for set, 'r' for read and 'i' for read and set as input.\n");
|
||||
printf(" -px where x is the GPIO pull up or down option. 'u' for pull up, 'd' for pull down and 'n' for none.\n");
|
||||
printf(" -nx where x is the pin number.\n");
|
||||
printf("\n");
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
printf("Running ... \n");
|
||||
|
||||
// parse the command line
|
||||
if (comparse(argc, argv) == EXIT_FAILURE) return showusage (EXIT_FAILURE);
|
||||
|
||||
if (!bcm2835_init()) return 1;
|
||||
|
||||
// GPIO begin if specified
|
||||
if (init == GPIO_BEGIN) ;
|
||||
|
||||
|
||||
// If len is 0, no need to continue, but do GPIO end if specified
|
||||
// if (len == 0) {
|
||||
// if (init == GPIO_END) ;
|
||||
// printf("Zero length ... error!\n");
|
||||
// return EXIT_SUCCESS;
|
||||
// }
|
||||
switch (pin_number) {
|
||||
case 3:
|
||||
pin = RPI_V2_GPIO_P1_03;
|
||||
break;
|
||||
case 5:
|
||||
pin = RPI_V2_GPIO_P1_05;
|
||||
break;
|
||||
case 7:
|
||||
pin = RPI_V2_GPIO_P1_07;
|
||||
break;
|
||||
case 26:
|
||||
pin = RPI_V2_GPIO_P1_26;
|
||||
break;
|
||||
case 24:
|
||||
pin = RPI_V2_GPIO_P1_24;
|
||||
break;
|
||||
case 21:
|
||||
pin = RPI_V2_GPIO_P1_21;
|
||||
break;
|
||||
case 19:
|
||||
pin = RPI_V2_GPIO_P1_19;
|
||||
break;
|
||||
case 23:
|
||||
pin = RPI_V2_GPIO_P1_23;
|
||||
break;
|
||||
case 10:
|
||||
pin = RPI_V2_GPIO_P1_10;
|
||||
break;
|
||||
case 11:
|
||||
pin = RPI_V2_GPIO_P1_11;
|
||||
break;
|
||||
case 12:
|
||||
pin = RPI_V2_GPIO_P1_12;
|
||||
break;
|
||||
case 13:
|
||||
pin = RPI_V2_GPIO_P1_13;
|
||||
break;
|
||||
case 15:
|
||||
pin = RPI_V2_GPIO_P1_15;
|
||||
break;
|
||||
case 16:
|
||||
pin = RPI_V2_GPIO_P1_16;
|
||||
break;
|
||||
case 18:
|
||||
pin = RPI_V2_GPIO_P1_18;
|
||||
break;
|
||||
case 22:
|
||||
pin = RPI_V2_GPIO_P1_22;
|
||||
break;
|
||||
default:
|
||||
pin = NO_PIN;
|
||||
}
|
||||
|
||||
switch (pull) {
|
||||
case PULL_UP:
|
||||
bcm2835_gpio_set_pud(pin, BCM2835_GPIO_PUD_UP);
|
||||
break;
|
||||
case PULL_DOWN:
|
||||
bcm2835_gpio_set_pud(pin, BCM2835_GPIO_PUD_DOWN);
|
||||
break;
|
||||
case NO_PULL:
|
||||
bcm2835_gpio_set_pud(pin, BCM2835_GPIO_PUD_OFF);
|
||||
break;
|
||||
default:
|
||||
bcm2835_gpio_set_pud(pin, BCM2835_GPIO_PUD_OFF);
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case MODE_READ:
|
||||
data = bcm2835_gpio_lev(pin);
|
||||
printf("Reading pin: %d\n", data);
|
||||
break;
|
||||
case MODE_INPUT_READ:
|
||||
bcm2835_gpio_fsel(pin, BCM2835_GPIO_FSEL_INPT);
|
||||
data = bcm2835_gpio_lev(pin);
|
||||
printf("Reading pin: %d\n", data);
|
||||
break;
|
||||
case MODE_SET:
|
||||
bcm2835_gpio_fsel(pin, BCM2835_GPIO_FSEL_OUTP);
|
||||
bcm2835_gpio_set(pin);
|
||||
break;
|
||||
case MODE_CLR:
|
||||
bcm2835_gpio_fsel(pin, BCM2835_GPIO_FSEL_OUTP);
|
||||
bcm2835_gpio_clr(pin);
|
||||
break;
|
||||
default:
|
||||
printf("Wrong mode ...!\n");
|
||||
}
|
||||
|
||||
if (debug_mode == DEBUG_ON) {
|
||||
printf("Init %d\n", init);
|
||||
printf("Mode %d\n", mode);
|
||||
printf("Pull %d\n", pull);
|
||||
printf("Pin Number %d\n", pin_number);
|
||||
printf("Pin %d\n", pin);
|
||||
}
|
||||
|
||||
if (init == GPIO_END) gpio_reset();
|
||||
bcm2835_close();
|
||||
printf("... done!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void gpio_reset(void) {
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_03, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_05, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_07, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_26, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_24, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_21, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_19, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_23, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_10, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_11, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_12, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_13, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_15, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_16, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_18, BCM2835_GPIO_PUD_OFF);
|
||||
bcm2835_gpio_set_pud(RPI_V2_GPIO_P1_22, BCM2835_GPIO_PUD_OFF);
|
||||
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_03, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_05, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_07, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_26, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_24, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_21, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_19, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_23, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_10, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_11, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_12, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_13, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_15, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_16, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_18, BCM2835_GPIO_FSEL_INPT);
|
||||
bcm2835_gpio_fsel(RPI_V2_GPIO_P1_22, BCM2835_GPIO_FSEL_INPT);
|
||||
}
|
@@ -0,0 +1,278 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* i2c.c
|
||||
*
|
||||
* Copyright (c) 2013 Shahrooz Shahparnia (sshahrooz@gmail.com)
|
||||
*
|
||||
* Description:
|
||||
* i2c is a command-line utility for executing i2c commands with the
|
||||
* Broadcom bcm2835. It was developed and tested on a Raspberry Pi single-board
|
||||
* computer model B. The utility is based on the bcm2835 C library developed
|
||||
* by Mike McCauley of Open System Consultants, http://www.open.com.au/mikem/bcm2835/.
|
||||
*
|
||||
* Invoking spincl results in a read or write I2C transfer. Options include the
|
||||
* the I2C clock frequency, read/write, address, and port initialization/closing
|
||||
* procedures. The command usage and command-line parameters are described below
|
||||
* in the showusage function, which prints the usage if no command-line parameters
|
||||
* are included or if there are any command-line parameter errors. Invoking i2c
|
||||
* requires root privilege.
|
||||
*
|
||||
* This file contains the main function as well as functions for displaying
|
||||
* usage and for parsing the command line.
|
||||
*
|
||||
* Open Source Licensing GNU GPLv3
|
||||
*
|
||||
* Building:
|
||||
* After installing bcm2835, you can build this
|
||||
* with something like:
|
||||
* gcc -o i2c i2c.c -l bcm2835
|
||||
* sudo ./i2c
|
||||
*
|
||||
* Or you can test it before installing with:
|
||||
* gcc -o i2c -I ../../src ../../src/bcm2835.c i2c.c
|
||||
* sudo ./i2c
|
||||
*
|
||||
* History:
|
||||
* 11/05 VERSION 1.0.0: Original
|
||||
*
|
||||
* User input parsing (comparse) and showusage\
|
||||
* have been adapted from: http://ipsolutionscorp.com/raspberry-pi-spi-utility/
|
||||
* mostly to keep consistence with the spincl tool usage.
|
||||
*
|
||||
* Compile with: gcc -o i2c i2c.c bcm2835.c
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* Set up ADC (Arduino: ADC1015)
|
||||
* sudo ./i2c -s72 -dw -ib 3 0x01 0x44 0x00 (select config register, setup mux, etc.)
|
||||
* sudo ./i2c -s72 -dw -ib 1 0x00 (select ADC data register)
|
||||
*
|
||||
* Bias DAC (Arduino: MCP4725) at some voltage
|
||||
* sudo ./i2c -s99 -dw -ib 3 0x60 0x7F 0xF0 (FS output is with 0xFF 0xF0)
|
||||
* Read ADC convergence result
|
||||
* sudo ./i2c -s72 -dr -ib 2 (FS output is 0x7FF0 with PGA1 = 1)
|
||||
*
|
||||
* In a DAC to ADC loop back typical results are:
|
||||
*
|
||||
* DAC VOUT ADC
|
||||
* 7FFh 1.6V 677h Note ratio is FS_ADC*PGA_GAIN/FS_DAC = 4.096/3.3 = 1.23
|
||||
* 5FFh 1.2V 4DCh
|
||||
* 8F0h 1.8V 745h
|
||||
* 9D0h 2V 7EAh
|
||||
* 000h 10mV 004h
|
||||
*
|
||||
********************************************************************************/
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define MODE_READ 0
|
||||
#define MODE_WRITE 1
|
||||
|
||||
#define MAX_LEN 32
|
||||
|
||||
char wbuf[MAX_LEN];
|
||||
|
||||
typedef enum {
|
||||
NO_ACTION,
|
||||
I2C_BEGIN,
|
||||
I2C_END
|
||||
} i2c_init;
|
||||
|
||||
uint8_t init = NO_ACTION;
|
||||
uint16_t clk_div = BCM2835_I2C_CLOCK_DIVIDER_148;
|
||||
uint8_t slave_address = 0x00;
|
||||
uint32_t len = 0;
|
||||
uint8_t mode = MODE_READ;
|
||||
|
||||
//*******************************************************************************
|
||||
// comparse: Parse the command line and return EXIT_SUCCESS or EXIT_FAILURE
|
||||
// argc: number of command-line arguments
|
||||
// argv: array of command-line argument strings
|
||||
//*******************************************************************************
|
||||
|
||||
int comparse(int argc, char **argv) {
|
||||
int argnum, i, xmitnum;
|
||||
|
||||
if (argc < 2) { // must have at least program name and len arguments
|
||||
// or -ie (I2C_END) or -ib (I2C_BEGIN)
|
||||
fprintf(stderr, "Insufficient command line arguments\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
argnum = 1;
|
||||
while (argnum < argc && argv[argnum][0] == '-') {
|
||||
|
||||
switch (argv[argnum][1]) {
|
||||
|
||||
case 'i': // I2C init
|
||||
switch (argv[argnum][2]) {
|
||||
case 'b': init = I2C_BEGIN; break;
|
||||
case 'e': init = I2C_END; break;
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid init option\n", argv[argnum][2]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd': // Read/Write Mode
|
||||
switch (argv[argnum][2]) {
|
||||
case 'r': mode = MODE_READ; break;
|
||||
case 'w': mode = MODE_WRITE; break;
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid init option\n", argv[argnum][2]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'c': // Clock divider
|
||||
clk_div = atoi(argv[argnum]+2);
|
||||
break;
|
||||
|
||||
case 's': // Slave address
|
||||
slave_address = atoi(argv[argnum]+2);
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf(stderr, "%c is not a valid option\n", argv[argnum][1]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
argnum++; // advance the argument number
|
||||
|
||||
}
|
||||
|
||||
// If command is used for I2C_END or I2C_BEGIN only
|
||||
if (argnum == argc && init != NO_ACTION) // no further arguments are needed
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
// Get len
|
||||
if (strspn(argv[argnum], "0123456789") != strlen(argv[argnum])) {
|
||||
fprintf(stderr, "Invalid number of bytes specified\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
len = atoi(argv[argnum]);
|
||||
|
||||
if (len > MAX_LEN) {
|
||||
fprintf(stderr, "Invalid number of bytes specified\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
argnum++; // advance the argument number
|
||||
|
||||
xmitnum = argc - argnum; // number of xmit bytes
|
||||
|
||||
memset(wbuf, 0, sizeof(wbuf));
|
||||
|
||||
for (i = 0; i < xmitnum; i++) {
|
||||
if (strspn(argv[argnum + i], "0123456789abcdefABCDEFxX") != strlen(argv[argnum + i])) {
|
||||
fprintf(stderr, "Invalid data: ");
|
||||
fprintf(stderr, "%d \n", xmitnum);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
wbuf[i] = (char)strtoul(argv[argnum + i], NULL, 0);
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
//*******************************************************************************
|
||||
// showusage: Print the usage statement and return errcode.
|
||||
//*******************************************************************************
|
||||
int showusage(int errcode) {
|
||||
printf("i2c \n");
|
||||
printf("Usage: \n");
|
||||
printf(" i2c [options] len [rcv/xmit bytes]\n");
|
||||
printf("\n");
|
||||
printf(" Invoking i2c results in an I2C transfer of a specified\n");
|
||||
printf(" number of bytes. Additionally, it can be used to set the appropriate\n");
|
||||
printf(" GPIO pins to their respective I2C configurations or return them\n");
|
||||
printf(" to GPIO input configuration. Options include the I2C clock frequency,\n");
|
||||
printf(" initialization option (i2c_begin and i2c_end). i2c must be invoked\n");
|
||||
printf(" with root privileges.\n");
|
||||
printf("\n");
|
||||
printf(" The following are the options, which must be a single letter\n");
|
||||
printf(" preceded by a '-' and followed by another character.\n");
|
||||
printf(" -dx where x is 'w' for write and 'r' is for read.\n");
|
||||
printf(" -ix where x is the I2C init option, b[egin] or e[nd]\n");
|
||||
printf(" The begin option must be executed before any transfer can happen.\n");
|
||||
printf(" It may be included with a transfer.\n");
|
||||
printf(" The end option will return the I2C pins to GPIO inputs.\n");
|
||||
printf(" It may be included with a transfer.\n");
|
||||
printf(" -cx where x is the clock divider from 250MHz. Allowed values\n");
|
||||
printf(" are 150 through 2500.\n");
|
||||
printf(" Corresponding frequencies are specified in bcm2835.h.\n");
|
||||
printf("\n");
|
||||
printf(" len: The number of bytes to be transmitted or received.\n");
|
||||
printf(" The maximum number of bytes allowed is %d\n", MAX_LEN);
|
||||
printf("\n");
|
||||
printf("\n");
|
||||
printf("\n");
|
||||
return errcode;
|
||||
}
|
||||
|
||||
char buf[MAX_LEN];
|
||||
int i;
|
||||
uint8_t data;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
printf("Running ... \n");
|
||||
|
||||
// parse the command line
|
||||
if (comparse(argc, argv) == EXIT_FAILURE) return showusage (EXIT_FAILURE);
|
||||
|
||||
if (!bcm2835_init())
|
||||
{
|
||||
printf("bcm2835_init failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// I2C begin if specified
|
||||
if (init == I2C_BEGIN)
|
||||
{
|
||||
if (!bcm2835_i2c_begin())
|
||||
{
|
||||
printf("bcm2835_i2c_begin failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If len is 0, no need to continue, but do I2C end if specified
|
||||
if (len == 0) {
|
||||
if (init == I2C_END) bcm2835_i2c_end();
|
||||
printf("... done!\n");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
bcm2835_i2c_setSlaveAddress(slave_address);
|
||||
bcm2835_i2c_setClockDivider(clk_div);
|
||||
fprintf(stderr, "Clock divider set to: %d\n", clk_div);
|
||||
fprintf(stderr, "len set to: %d\n", len);
|
||||
fprintf(stderr, "Slave address set to: %d\n", slave_address);
|
||||
|
||||
if (mode == MODE_READ) {
|
||||
for (i=0; i<MAX_LEN; i++) buf[i] = 'n';
|
||||
data = bcm2835_i2c_read(buf, len);
|
||||
printf("Read Result = %d\n", data);
|
||||
for (i=0; i<MAX_LEN; i++) {
|
||||
if(buf[i] != 'n') printf("Read Buf[%d] = %x\n", i, buf[i]);
|
||||
}
|
||||
}
|
||||
if (mode == MODE_WRITE) {
|
||||
data = bcm2835_i2c_write(wbuf, len);
|
||||
printf("Write Result = %d\n", data);
|
||||
}
|
||||
|
||||
// This I2C end is done after a transfer if specified
|
||||
if (init == I2C_END) bcm2835_i2c_end();
|
||||
bcm2835_close();
|
||||
printf("... done!\n");
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,53 @@
|
||||
// input.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Reads and prints the state of an input pin
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o input input.c -l bcm2835
|
||||
// sudo ./input
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o input -I ../../src ../../src/bcm2835.c input.c
|
||||
// sudo ./input
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2011 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Input on RPi pin GPIO 15
|
||||
#define PIN RPI_GPIO_P1_15
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// If you call this, it will not actually access the GPIO
|
||||
// Use for testing
|
||||
// bcm2835_set_debug(1);
|
||||
|
||||
if (!bcm2835_init())
|
||||
return 1;
|
||||
|
||||
// Set RPI pin P1-15 to be an input
|
||||
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);
|
||||
// with a pullup
|
||||
bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);
|
||||
|
||||
// Blink
|
||||
while (1)
|
||||
{
|
||||
// Read some data
|
||||
uint8_t value = bcm2835_gpio_lev(PIN);
|
||||
printf("read from pin 15: %d\n", value);
|
||||
|
||||
// wait a bit
|
||||
delay(500);
|
||||
}
|
||||
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,66 @@
|
||||
// pwm.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Shows how to use PWM to control GPIO pins
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o pwm pwm.c -l bcm2835
|
||||
// sudo ./pwm
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o pwm -I ../../src ../../src/bcm2835.c pwm.c
|
||||
// sudo ./pwm
|
||||
//
|
||||
// Connect an LED between GPIO18 (pin 12) and GND to observe the LED changing in brightness
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2013 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// PWM output on RPi Plug P1 pin 12 (which is GPIO pin 18)
|
||||
// in alt fun 5.
|
||||
// Note that this is the _only_ PWM pin available on the RPi IO headers
|
||||
#define PIN RPI_GPIO_P1_12
|
||||
// and it is controlled by PWM channel 0
|
||||
#define PWM_CHANNEL 0
|
||||
// This controls the max range of the PWM signal
|
||||
#define RANGE 1024
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (!bcm2835_init())
|
||||
return 1;
|
||||
|
||||
// Set the output pin to Alt Fun 5, to allow PWM channel 0 to be output there
|
||||
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_ALT5);
|
||||
|
||||
// Clock divider is set to 16.
|
||||
// With a divider of 16 and a RANGE of 1024, in MARKSPACE mode,
|
||||
// the pulse repetition frequency will be
|
||||
// 1.2MHz/1024 = 1171.875Hz, suitable for driving a DC motor with PWM
|
||||
bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_16);
|
||||
bcm2835_pwm_set_mode(PWM_CHANNEL, 1, 1);
|
||||
bcm2835_pwm_set_range(PWM_CHANNEL, RANGE);
|
||||
|
||||
// Vary the PWM m/s ratio between 1/RANGE and (RANGE-1)/RANGE
|
||||
// over the course of a a few seconds
|
||||
int direction = 1; // 1 is increase, -1 is decrease
|
||||
int data = 1;
|
||||
while (1)
|
||||
{
|
||||
if (data == 1)
|
||||
direction = 1; // Switch to increasing
|
||||
else if (data == RANGE-1)
|
||||
direction = -1; // Switch to decreasing
|
||||
data += direction;
|
||||
bcm2835_pwm_set_data(PWM_CHANNEL, data);
|
||||
bcm2835_delay(1);
|
||||
}
|
||||
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
// spi.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Shows how to interface with SPI to transfer a byte to and from an SPI device
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o spi spi.c -l bcm2835
|
||||
// sudo ./spi
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o spi -I ../../src ../../src/bcm2835.c spi.c
|
||||
// sudo ./spi
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2012 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// If you call this, it will not actually access the GPIO
|
||||
// Use for testing
|
||||
// bcm2835_set_debug(1);
|
||||
|
||||
if (!bcm2835_init())
|
||||
{
|
||||
printf("bcm2835_init failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!bcm2835_spi_begin())
|
||||
{
|
||||
printf("bcm2835_spi_begin failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); // The default
|
||||
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0); // The default
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
|
||||
bcm2835_spi_chipSelect(BCM2835_SPI_CS0); // The default
|
||||
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW); // the default
|
||||
|
||||
// Send a byte to the slave and simultaneously read a byte back from the slave
|
||||
// If you tie MISO to MOSI, you should read back what was sent
|
||||
uint8_t send_data = 0x23;
|
||||
uint8_t read_data = bcm2835_spi_transfer(send_data);
|
||||
printf("Sent to SPI: 0x%02X. Read back from SPI: 0x%02X.\n", send_data, read_data);
|
||||
if (send_data != read_data)
|
||||
printf("Do you have the loopback from MOSI to MISO connected?\n");
|
||||
bcm2835_spi_end();
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,63 @@
|
||||
// spin.c
|
||||
//
|
||||
// Example program for bcm2835 library
|
||||
// Shows how to interface with SPI to transfer a number of bytes to and from an SPI device
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o spin spin.c -l bcm2835
|
||||
// sudo ./spin
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o spin -I ../../src ../../src/bcm2835.c spin.c
|
||||
// sudo ./spin
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2012 Mike McCauley
|
||||
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// If you call this, it will not actually access the GPIO
|
||||
// Use for testing
|
||||
// bcm2835_set_debug(1);
|
||||
|
||||
if (!bcm2835_init())
|
||||
{
|
||||
printf("bcm2835_init failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!bcm2835_spi_begin())
|
||||
{
|
||||
printf("bcm2835_spi_begin failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
bcm2835_spi_begin();
|
||||
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); // The default
|
||||
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0); // The default
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
|
||||
bcm2835_spi_chipSelect(BCM2835_SPI_CS0); // The default
|
||||
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW); // the default
|
||||
|
||||
// Send a some bytes to the slave and simultaneously read
|
||||
// some bytes back from the slave
|
||||
// Most SPI devices expect one or 2 bytes of command, after which they will send back
|
||||
// some data. In such a case you will have the command bytes first in the buffer,
|
||||
// followed by as many 0 bytes as you expect returned data bytes. After the transfer, you
|
||||
// Can the read the reply bytes from the buffer.
|
||||
// If you tie MISO to MOSI, you should read back what was sent.
|
||||
|
||||
char buf[] = { 0x01, 0x02, 0x11, 0x33 }; // Data to send
|
||||
bcm2835_spi_transfern(buf, sizeof(buf));
|
||||
// buf will now be filled with the data that was read from the slave
|
||||
printf("Read from SPI: %02X %02X %02X %02X \n", buf[0], buf[1], buf[2], buf[3]);
|
||||
|
||||
bcm2835_spi_end();
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -0,0 +1,92 @@
|
||||
// spiram.c
|
||||
//
|
||||
// Little library for accessing SPI RAM such as 23K256-I/P
|
||||
// using bcm2835 library on Raspberry Pi
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2018 Mike McCauley
|
||||
// This software is part of the bcm2835 library and is licensed under the same conditions
|
||||
// $Id: $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <string.h> // memcpy
|
||||
#include "spiram.h"
|
||||
|
||||
static uint8_t _mode = SPIRAM_MODE_INVALID;
|
||||
|
||||
uint8_t spiram_read_sr()
|
||||
{
|
||||
uint8_t command[] = { SPIRAM_OPCODE_READ_SR, 0};
|
||||
bcm2835_spi_transfern(command, sizeof(command));
|
||||
return command[1];
|
||||
}
|
||||
|
||||
bool spiram_write_sr(uint8_t value)
|
||||
{
|
||||
uint8_t command[] = { SPIRAM_OPCODE_WRITE_SR, value};
|
||||
bcm2835_spi_transfern(command, sizeof(command));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spiram_set_mode(uint8_t mode)
|
||||
{
|
||||
if (mode != _mode)
|
||||
{
|
||||
spiram_write_sr(mode);
|
||||
_mode = mode;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spiram_begin()
|
||||
{
|
||||
_mode = SPIRAM_MODE_BYTE;
|
||||
|
||||
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); // The default
|
||||
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0); // The default
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
|
||||
bcm2835_spi_chipSelect(BCM2835_SPI_CS0); // The default
|
||||
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW); // the default
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spiram_end()
|
||||
{
|
||||
bcm2835_spi_end();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
uint8_t spiram_read_byte(uint16_t address)
|
||||
{
|
||||
spiram_set_mode(SPIRAM_MODE_BYTE);
|
||||
uint8_t command[] = { SPIRAM_OPCODE_READ, (address >> 8) & 0xff, address & 0xff, 0xff };
|
||||
bcm2835_spi_transfern(command, sizeof(command));
|
||||
uint8_t ret = command[3];
|
||||
}
|
||||
|
||||
bool spiram_write_byte(uint16_t address, uint8_t value)
|
||||
{
|
||||
spiram_set_mode(SPIRAM_MODE_BYTE);
|
||||
uint8_t command[] = { SPIRAM_OPCODE_WRITE, (address >> 8) & 0xff, address & 0xff, value };
|
||||
bcm2835_spi_writenb(command, sizeof(command));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spiram_read_page(uint16_t address, uint8_t *buf)
|
||||
{
|
||||
spiram_set_mode(SPIRAM_MODE_PAGE);
|
||||
uint8_t command[3 + SPIRAM_PAGE_SIZE] = { SPIRAM_OPCODE_READ, (address >> 8) & 0xff, address & 0xff };
|
||||
bcm2835_spi_transfern(command, sizeof(command));
|
||||
memcpy(buf, command + 3, SPIRAM_PAGE_SIZE);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spiram_write_page(uint16_t address, uint8_t *buf)
|
||||
{
|
||||
spiram_set_mode(SPIRAM_MODE_PAGE);
|
||||
uint8_t command[3 + SPIRAM_PAGE_SIZE] = { SPIRAM_OPCODE_WRITE, (address >> 8) & 0xff, address & 0xff };
|
||||
memcpy(command + 3, buf, SPIRAM_PAGE_SIZE);;
|
||||
bcm2835_spi_writenb(command, sizeof(command));
|
||||
return true;
|
||||
}
|
@@ -0,0 +1,102 @@
|
||||
// spiram.h
|
||||
//
|
||||
// Header for a Little Library for accessing SPI RAM chips such as 23K256-I/P
|
||||
// using bcm2835 library on Raspberry Pi
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2018 Mike McCauley
|
||||
// This software is part of the bcm2835 library and is licensed under the same conditions
|
||||
// $Id: $
|
||||
|
||||
#include <stdbool.h> // bool, true, false
|
||||
|
||||
#ifndef SPIRAM_h
|
||||
#define SPIRAM_h
|
||||
|
||||
#define SPIRAM_HOLD_DISABLE 0x1
|
||||
#define SPIRAM_MODE_BYTE (0x00 | SPIRAM_HOLD_DISABLE)
|
||||
#define SPIRAM_MODE_PAGE (0x80 | SPIRAM_HOLD_DISABLE)
|
||||
#define SPIRAM_MODE_STREAM (0x40 | SPIRAM_HOLD_DISABLE)
|
||||
#define SPIRAM_MODE_INVALID 0xff
|
||||
#define SPIRAM_OPCODE_READ_SR 0x05
|
||||
#define SPIRAM_OPCODE_WRITE_SR 0x01
|
||||
#define SPIRAM_OPCODE_READ 0x03
|
||||
#define SPIRAM_OPCODE_WRITE 0x02
|
||||
|
||||
/* Size of a page in 23K256 */
|
||||
#define SPIRAM_PAGE_SIZE 32
|
||||
|
||||
/*
|
||||
* This library allows you to read and write data from an external SPI interfaced static ram (SRAM)
|
||||
* such as 23K256 (256kbit = 32kByte)
|
||||
* Byte and POage modes are supported.
|
||||
* Valid addresses are from 0x0000 to 0x7fff
|
||||
* Tested on RPI 3 Model B, Raspbian Jessie
|
||||
*/
|
||||
|
||||
/*
|
||||
* Initialise the spiram library, enables SPI with default divider of
|
||||
* BCM2835_SPI_CLOCK_DIVIDER_65536 = 6.1035156kHz on RPI3.
|
||||
* You can change the SPI speed after calling this by calling bcm2835_spi_setClockDivider()
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_begin();
|
||||
|
||||
/*
|
||||
* Stops using the RPI SPI functions and returns the GPIO pins to their default behaviour.
|
||||
* Call this when you have finished using SPI forever, or at the end of your program
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_end();
|
||||
|
||||
/*
|
||||
* Read and returns the current value of the SRAM status register
|
||||
*/
|
||||
uint8_t spiram_read_sr();
|
||||
|
||||
/*
|
||||
* Write a new value to the SRAM status register,
|
||||
* usually one of SPIRAM_MODE_*
|
||||
* You should never need to call this directly. Used internally.
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_write_sr(uint8_t value);
|
||||
|
||||
/*
|
||||
* Set the operating mode of the SRAM.
|
||||
* Mode is one of SPIRAM_MODE_*. THis is done automatically
|
||||
* by the spiram_write_* and spiram_read_* functions, so you would not normally
|
||||
* need to call this directly.
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_set_mode(uint8_t mode);
|
||||
|
||||
/*
|
||||
* Reads a single byte from the given address and returns it.
|
||||
*/
|
||||
uint8_t spiram_read_byte(uint16_t address);
|
||||
|
||||
/*
|
||||
* Writes a single byte to the given address.
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_write_byte(uint16_t address, uint8_t value);
|
||||
|
||||
/*
|
||||
* Reads a whole page of data (32 bytes) from the page starting at the given address.
|
||||
* The read data is placed in buf. Be sure that there is enough rom there for it.
|
||||
* Caution: if the starting address is not on a page boundary,
|
||||
* it will wrap back to the beginning of the page.
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_read_page(uint16_t address, uint8_t *buf);
|
||||
|
||||
/*
|
||||
* Writes a whole page of data (32 bytes) to the page starting at the given address.
|
||||
* Caution: if the starting address is not on a page boundary,
|
||||
* it will wrap back to the beginning of the page.
|
||||
* Returns true on success, false otherwise
|
||||
*/
|
||||
bool spiram_write_page(uint16_t address, uint8_t *buf);
|
||||
|
||||
#endif
|
@@ -0,0 +1,99 @@
|
||||
// spiram_test.c
|
||||
//
|
||||
// Example program for bcm2835
|
||||
// Shows how to interface with SPI RAM such as 23K256-I/P
|
||||
// using the spiram little library
|
||||
//
|
||||
// Tested on RPI 3 Model B, Raspbian Jessie
|
||||
// Tested at full speed over many hours with no errors.
|
||||
//
|
||||
// Connect RPi 3 B to 23K256-I/P like this:
|
||||
// RPi pin Function 23K256-I/P pin (name)
|
||||
// J1-6 GND 4 (VSS)
|
||||
// J1-1 3.3V 8 (VCC)
|
||||
// and 7 (/HOLD)
|
||||
// J1-19 SPI0_MOSI 5 (SI)
|
||||
// J1-21 SPI0_MISO 2 (SO)
|
||||
// J1-23 SPI0_SCLK 6 (SCK)
|
||||
// J1-24 SPI0_CE0_N 1 (/CS)
|
||||
//
|
||||
// After installing bcm2835, you can build this
|
||||
// with something like:
|
||||
// gcc -o spiram_test spiram.c spiram_test.c -l bcm2835
|
||||
// sudo ./spiram_test
|
||||
//
|
||||
// Or you can test it before installing with:
|
||||
// gcc -o spiram_test -I ../../src ../../src/bcm2835.c spiram.c spiram_test.c
|
||||
// sudo ./spiram_test
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2018 Mike McCauley
|
||||
// $Id: $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h> // memcmp
|
||||
#include "spiram.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (!bcm2835_init())
|
||||
{
|
||||
printf("bcm2835_init failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!bcm2835_spi_begin())
|
||||
{
|
||||
printf("bcm2835_spi_begin failed. Are you running as root??\n");
|
||||
return 1;
|
||||
}
|
||||
if (!spiram_begin())
|
||||
{
|
||||
printf("spiram_begin failed.\n");
|
||||
return 1;
|
||||
}
|
||||
/* You can speed things up by selecting a faster SPI speed
|
||||
// after spiram_begin, which defaults to BCM2835_SPI_CLOCK_DIVIDER_65536 = 6.1035156kHz on RPI3
|
||||
*/
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_64); // 6.25MHz on RPI3
|
||||
|
||||
uint8_t value = 0;
|
||||
uint16_t address = 0x0000;
|
||||
while (1)
|
||||
{
|
||||
uint8_t ret;
|
||||
|
||||
/* ret = spiram_read_sr();*/
|
||||
spiram_write_byte(address, value);
|
||||
ret = spiram_read_byte(address);
|
||||
if (ret != value)
|
||||
printf("ERROR: spiram_read_byte address %04x got %02x, expected %02x\n", address, ret, value);
|
||||
#if 0
|
||||
printf("spiram_read_byte at address %04x got %02x\n", address, ret);
|
||||
#endif
|
||||
|
||||
uint8_t write_page_buf[SPIRAM_PAGE_SIZE] = { 0, value, value, value };
|
||||
uint8_t read_page_buf[SPIRAM_PAGE_SIZE];
|
||||
spiram_write_page(address, write_page_buf);
|
||||
|
||||
spiram_read_page(address, read_page_buf);
|
||||
if (memcmp(write_page_buf, read_page_buf, SPIRAM_PAGE_SIZE) != 0)
|
||||
printf("ERROR: spiram_read_page at address %04x\n", address);
|
||||
#if 0
|
||||
printf("spiram_read_page address %04x got ", address);
|
||||
int i;
|
||||
for (i = 0; i < SPIRAM_PAGE_SIZE; i++)
|
||||
printf("%02x ", read_page_buf[i]);
|
||||
printf("\n");
|
||||
#endif
|
||||
/* sleep(1); */
|
||||
value++;
|
||||
address++;
|
||||
}
|
||||
|
||||
spiram_end();
|
||||
bcm2835_close();
|
||||
return 0;
|
||||
}
|
||||
|
520
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/install-sh
Normal file
@@ -0,0 +1,520 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dst_arg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
-*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test -z "$d" && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
9636
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/ltmain.sh
Normal file
215
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing
Normal file
@@ -0,0 +1,215 @@
|
||||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2012-06-26.16; # UTC
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# 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 2, 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/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
|
||||
--is-lightweight)
|
||||
# Used by our autoconf macros to check whether the available missing
|
||||
# script is modern enough.
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--run)
|
||||
# Back-compat with the calling convention used by older automake.
|
||||
shift
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||
to PROGRAM being missing or too old.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal autoconf autoheader autom4te automake makeinfo
|
||||
bison yacc flex lex help2man
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||
'g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: unknown '$1' option"
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Run the given program, remember its exit status.
|
||||
"$@"; st=$?
|
||||
|
||||
# If it succeeded, we are done.
|
||||
test $st -eq 0 && exit 0
|
||||
|
||||
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||
# passed; such an option is passed most likely to detect whether the
|
||||
# program is present and works.
|
||||
case $2 in --version|--help) exit $st;; esac
|
||||
|
||||
# Exit code 63 means version mismatch. This often happens when the user
|
||||
# tries to use an ancient version of a tool on a file that requires a
|
||||
# minimum version.
|
||||
if test $st -eq 63; then
|
||||
msg="probably too old"
|
||||
elif test $st -eq 127; then
|
||||
# Program was missing.
|
||||
msg="missing on your system"
|
||||
else
|
||||
# Program was found and executed, but failed. Give up.
|
||||
exit $st
|
||||
fi
|
||||
|
||||
perl_URL=http://www.perl.org/
|
||||
flex_URL=http://flex.sourceforge.net/
|
||||
gnu_software_URL=http://www.gnu.org/software
|
||||
|
||||
program_details ()
|
||||
{
|
||||
case $1 in
|
||||
aclocal|automake)
|
||||
echo "The '$1' program is part of the GNU Automake package:"
|
||||
echo "<$gnu_software_URL/automake>"
|
||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/autoconf>"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
autoconf|autom4te|autoheader)
|
||||
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||
echo "<$gnu_software_URL/autoconf/>"
|
||||
echo "It also requires GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice ()
|
||||
{
|
||||
# Normalize program name to check for.
|
||||
normalized_program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
printf '%s\n' "'$1' is $msg."
|
||||
|
||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||
case $normalized_program in
|
||||
autoconf*)
|
||||
echo "You should only need it if you modified 'configure.ac',"
|
||||
echo "or m4 files included by it."
|
||||
program_details 'autoconf'
|
||||
;;
|
||||
autoheader*)
|
||||
echo "You should only need it if you modified 'acconfig.h' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'autoheader'
|
||||
;;
|
||||
automake*)
|
||||
echo "You should only need it if you modified 'Makefile.am' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'automake'
|
||||
;;
|
||||
aclocal*)
|
||||
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'aclocal'
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'automa4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
echo "You should only need it if you modified a '.y' file."
|
||||
echo "You may want to install the GNU Bison package:"
|
||||
echo "<$gnu_software_URL/bison/>"
|
||||
;;
|
||||
lex*|flex*)
|
||||
echo "You should only need it if you modified a '.l' file."
|
||||
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||
echo "<$flex_URL>"
|
||||
;;
|
||||
help2man*)
|
||||
echo "You should only need it if you modified a dependency" \
|
||||
"of a man page."
|
||||
echo "You may want to install the GNU Help2man package:"
|
||||
echo "<$gnu_software_URL/help2man/>"
|
||||
;;
|
||||
makeinfo*)
|
||||
echo "You should only need it if you modified a '.texi' file, or"
|
||||
echo "any other file indirectly affecting the aspect of the manual."
|
||||
echo "You might want to install the Texinfo package:"
|
||||
echo "<$gnu_software_URL/texinfo/>"
|
||||
echo "The spurious makeinfo call might also be the consequence of"
|
||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||
echo "want to install GNU make:"
|
||||
echo "<$gnu_software_URL/make/>"
|
||||
;;
|
||||
*)
|
||||
echo "You might have modified some files without having the proper"
|
||||
echo "tools for further handling them. Check the 'README' file, it"
|
||||
echo "often tells you about the needed prerequisites for installing"
|
||||
echo "this package. You may also peek at any GNU archive site, in"
|
||||
echo "case some other package contains this missing '$1' program."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||
-e '2,$s/^/ /' >&2
|
||||
|
||||
# Propagate the correct exit status (expected to be 127 for a program
|
||||
# not found, 63 for a program that failed due to version mismatch).
|
||||
exit $st
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
@@ -0,0 +1,234 @@
|
||||
bcm2835.o: bcm2835.c /usr/include/stdc-predef.h /usr/include/stdlib.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h \
|
||||
/usr/include/features.h /usr/include/arm-linux-gnueabihf/sys/cdefs.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/wordsize.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/long-double.h \
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs.h \
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitflags.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn-common.h \
|
||||
/usr/include/arm-linux-gnueabihf/sys/types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/typesizes.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/time_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h \
|
||||
/usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/byteswap.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h \
|
||||
/usr/include/arm-linux-gnueabihf/sys/select.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/select.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h \
|
||||
/usr/include/alloca.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
|
||||
/usr/include/stdio.h /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio.h /usr/include/errno.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/errno.h /usr/include/linux/errno.h \
|
||||
/usr/include/arm-linux-gnueabihf/asm/errno.h \
|
||||
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
|
||||
/usr/include/fcntl.h /usr/include/arm-linux-gnueabihf/bits/fcntl.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stat.h \
|
||||
/usr/include/arm-linux-gnueabihf/sys/mman.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman-linux.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman-shared.h \
|
||||
/usr/include/string.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h \
|
||||
/usr/include/strings.h /usr/include/time.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/time.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h \
|
||||
/usr/include/unistd.h /usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/environments.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/confname.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_core.h bcm2835.h \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h \
|
||||
/usr/include/stdint.h /usr/include/arm-linux-gnueabihf/bits/wchar.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h
|
||||
|
||||
/usr/include/stdc-predef.h:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h:
|
||||
|
||||
/usr/include/features.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/cdefs.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/wordsize.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/long-double.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitflags.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn-common.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/typesizes.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/time_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h:
|
||||
|
||||
/usr/include/endian.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/endian.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/select.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/select.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio.h:
|
||||
|
||||
/usr/include/errno.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/errno.h:
|
||||
|
||||
/usr/include/linux/errno.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/asm/errno.h:
|
||||
|
||||
/usr/include/asm-generic/errno.h:
|
||||
|
||||
/usr/include/asm-generic/errno-base.h:
|
||||
|
||||
/usr/include/fcntl.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/fcntl.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stat.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/mman.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman-linux.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/mman-shared.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h:
|
||||
|
||||
/usr/include/strings.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/time.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/environments.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/confname.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_core.h:
|
||||
|
||||
bcm2835.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h:
|
||||
|
||||
/usr/include/stdint.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/wchar.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h:
|
@@ -0,0 +1,174 @@
|
||||
test.o: test.c /usr/include/stdc-predef.h bcm2835.h \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h \
|
||||
/usr/include/stdint.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h \
|
||||
/usr/include/features.h /usr/include/arm-linux-gnueabihf/sys/cdefs.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/wordsize.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/long-double.h \
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs.h \
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/typesizes.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/wchar.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h \
|
||||
/usr/include/stdio.h /usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio.h /usr/include/stdlib.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitflags.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn-common.h \
|
||||
/usr/include/arm-linux-gnueabihf/sys/types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/time_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h \
|
||||
/usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/byteswap.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h \
|
||||
/usr/include/arm-linux-gnueabihf/sys/select.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/select.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h \
|
||||
/usr/include/alloca.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
|
||||
/usr/include/unistd.h /usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/environments.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/confname.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h \
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_core.h
|
||||
|
||||
/usr/include/stdc-predef.h:
|
||||
|
||||
bcm2835.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h:
|
||||
|
||||
/usr/include/stdint.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h:
|
||||
|
||||
/usr/include/features.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/cdefs.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/wordsize.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/long-double.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/typesizes.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/wchar.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h:
|
||||
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdio.h:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitflags.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/floatn-common.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/time_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h:
|
||||
|
||||
/usr/include/endian.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/endian.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/sys/select.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/select.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/environments.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/confname.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h:
|
||||
|
||||
/usr/include/arm-linux-gnueabihf/bits/getopt_core.h:
|
987
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src/Makefile
Normal file
@@ -0,0 +1,987 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# src/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/bcm2835
|
||||
pkgincludedir = $(includedir)/bcm2835
|
||||
pkglibdir = $(libdir)/bcm2835
|
||||
pkglibexecdir = $(libexecdir)/bcm2835
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
check_PROGRAMS = test$(EXEEXT)
|
||||
subdir = src
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
|
||||
LIBRARIES = $(lib_LIBRARIES)
|
||||
AR = ar
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_$(V))
|
||||
am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
am__v_AR_1 =
|
||||
libbcm2835_a_AR = $(AR) $(ARFLAGS)
|
||||
libbcm2835_a_LIBADD =
|
||||
am_libbcm2835_a_OBJECTS = bcm2835.$(OBJEXT)
|
||||
libbcm2835_a_OBJECTS = $(am_libbcm2835_a_OBJECTS)
|
||||
am_test_OBJECTS = test.$(OBJEXT)
|
||||
test_OBJECTS = $(am_test_OBJECTS)
|
||||
test_DEPENDENCIES = ./libbcm2835.a
|
||||
AM_V_P = $(am__v_P_$(V))
|
||||
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I. -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/bcm2835.Po ./$(DEPDIR)/test.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(libbcm2835_a_SOURCES) $(test_SOURCES)
|
||||
DIST_SOURCES = $(libbcm2835_a_SOURCES) $(test_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(include_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__tty_colors_dummy = \
|
||||
mgn= red= grn= lgn= blu= brg= std=; \
|
||||
am__color_tests=no
|
||||
am__tty_colors = { \
|
||||
$(am__tty_colors_dummy); \
|
||||
if test "X$(AM_COLOR_TESTS)" = Xno; then \
|
||||
am__color_tests=no; \
|
||||
elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
|
||||
am__color_tests=yes; \
|
||||
elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
|
||||
am__color_tests=yes; \
|
||||
fi; \
|
||||
if test $$am__color_tests = yes; then \
|
||||
red='[0;31m'; \
|
||||
grn='[0;32m'; \
|
||||
lgn='[1;32m'; \
|
||||
blu='[1;34m'; \
|
||||
mgn='[0;35m'; \
|
||||
brg='[1m'; \
|
||||
std='[m'; \
|
||||
fi; \
|
||||
}
|
||||
am__recheck_rx = ^[ ]*:recheck:[ ]*
|
||||
am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
|
||||
am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
|
||||
# A command that, given a newline-separated list of test names on the
|
||||
# standard input, print the name of the tests that are to be re-run
|
||||
# upon "make recheck".
|
||||
am__list_recheck_tests = $(AWK) '{ \
|
||||
recheck = 1; \
|
||||
while ((rc = (getline line < ($$0 ".trs"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
{ \
|
||||
if ((getline line2 < ($$0 ".log")) < 0) \
|
||||
recheck = 0; \
|
||||
break; \
|
||||
} \
|
||||
else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
|
||||
{ \
|
||||
recheck = 0; \
|
||||
break; \
|
||||
} \
|
||||
else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
|
||||
{ \
|
||||
break; \
|
||||
} \
|
||||
}; \
|
||||
if (recheck) \
|
||||
print $$0; \
|
||||
close ($$0 ".trs"); \
|
||||
close ($$0 ".log"); \
|
||||
}'
|
||||
# A command that, given a newline-separated list of test names on the
|
||||
# standard input, create the global log from their .trs and .log files.
|
||||
am__create_global_log = $(AWK) ' \
|
||||
function fatal(msg) \
|
||||
{ \
|
||||
print "fatal: making $@: " msg | "cat >&2"; \
|
||||
exit 1; \
|
||||
} \
|
||||
function rst_section(header) \
|
||||
{ \
|
||||
print header; \
|
||||
len = length(header); \
|
||||
for (i = 1; i <= len; i = i + 1) \
|
||||
printf "="; \
|
||||
printf "\n\n"; \
|
||||
} \
|
||||
{ \
|
||||
copy_in_global_log = 1; \
|
||||
global_test_result = "RUN"; \
|
||||
while ((rc = (getline line < ($$0 ".trs"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
fatal("failed to read from " $$0 ".trs"); \
|
||||
if (line ~ /$(am__global_test_result_rx)/) \
|
||||
{ \
|
||||
sub("$(am__global_test_result_rx)", "", line); \
|
||||
sub("[ ]*$$", "", line); \
|
||||
global_test_result = line; \
|
||||
} \
|
||||
else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
|
||||
copy_in_global_log = 0; \
|
||||
}; \
|
||||
if (copy_in_global_log) \
|
||||
{ \
|
||||
rst_section(global_test_result ": " $$0); \
|
||||
while ((rc = (getline line < ($$0 ".log"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
fatal("failed to read from " $$0 ".log"); \
|
||||
print line; \
|
||||
}; \
|
||||
printf "\n"; \
|
||||
}; \
|
||||
close ($$0 ".trs"); \
|
||||
close ($$0 ".log"); \
|
||||
}'
|
||||
# Restructured Text title.
|
||||
am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
|
||||
# Solaris 10 'make', and several other traditional 'make' implementations,
|
||||
# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
|
||||
# by disabling -e (using the XSI extension "set +e") if it's set.
|
||||
am__sh_e_setup = case $$- in *e*) set +e;; esac
|
||||
# Default flags passed to test drivers.
|
||||
am__common_driver_flags = \
|
||||
--color-tests "$$am__color_tests" \
|
||||
--enable-hard-errors "$$am__enable_hard_errors" \
|
||||
--expect-failure "$$am__expect_failure"
|
||||
# To be inserted before the command running the test. Creates the
|
||||
# directory for the log if needed. Stores in $dir the directory
|
||||
# containing $f, in $tst the test, in $log the log. Executes the
|
||||
# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
|
||||
# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
|
||||
# will run the test scripts (or their associated LOG_COMPILER, if
|
||||
# thy have one).
|
||||
am__check_pre = \
|
||||
$(am__sh_e_setup); \
|
||||
$(am__vpath_adj_setup) $(am__vpath_adj) \
|
||||
$(am__tty_colors); \
|
||||
srcdir=$(srcdir); export srcdir; \
|
||||
case "$@" in \
|
||||
*/*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
|
||||
*) am__odir=.;; \
|
||||
esac; \
|
||||
test "x$$am__odir" = x"." || test -d "$$am__odir" \
|
||||
|| $(MKDIR_P) "$$am__odir" || exit $$?; \
|
||||
if test -f "./$$f"; then dir=./; \
|
||||
elif test -f "$$f"; then dir=; \
|
||||
else dir="$(srcdir)/"; fi; \
|
||||
tst=$$dir$$f; log='$@'; \
|
||||
if test -n '$(DISABLE_HARD_ERRORS)'; then \
|
||||
am__enable_hard_errors=no; \
|
||||
else \
|
||||
am__enable_hard_errors=yes; \
|
||||
fi; \
|
||||
case " $(XFAIL_TESTS) " in \
|
||||
*[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
|
||||
am__expect_failure=yes;; \
|
||||
*) \
|
||||
am__expect_failure=no;; \
|
||||
esac; \
|
||||
$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
|
||||
# A shell command to get the names of the tests scripts with any registered
|
||||
# extension removed (i.e., equivalently, the names of the test logs, with
|
||||
# the '.log' extension removed). The result is saved in the shell variable
|
||||
# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
|
||||
# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
|
||||
# since that might cause problem with VPATH rewrites for suffix-less tests.
|
||||
# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
|
||||
am__set_TESTS_bases = \
|
||||
bases='$(TEST_LOGS)'; \
|
||||
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
|
||||
bases=`echo $$bases`
|
||||
RECHECK_LOGS = $(TEST_LOGS)
|
||||
AM_RECURSIVE_TARGETS = check recheck
|
||||
TEST_SUITE_LOG = test-suite.log
|
||||
TEST_EXTENSIONS = .test
|
||||
LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
|
||||
LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
|
||||
am__set_b = \
|
||||
case '$@' in \
|
||||
*/*) \
|
||||
case '$*' in \
|
||||
*/*) b='$*';; \
|
||||
*) b=`echo '$@' | sed 's/\.log$$//'`; \
|
||||
esac;; \
|
||||
*) \
|
||||
b='$*';; \
|
||||
esac
|
||||
am__test_logs1 = $(TESTS:=.log)
|
||||
am__test_logs2 = $(am__test_logs1:.log=.log)
|
||||
TEST_LOGS = $(am__test_logs2:.test.log=.log)
|
||||
TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
|
||||
TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
|
||||
$(TEST_LOG_FLAGS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
|
||||
$(top_srcdir)/test-driver
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing aclocal-1.16
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AUTOCONF = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing automake-1.16
|
||||
AWK = mawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPPFLAGS =
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DOXYGEN =
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EXEEXT =
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBOBJS =
|
||||
LIBS = -lrt
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/missing makeinfo
|
||||
MKDIR_P = /bin/mkdir -p
|
||||
OBJEXT = o
|
||||
PACKAGE = bcm2835
|
||||
PACKAGE_BUGREPORT = mikem@airspayce.com
|
||||
PACKAGE_NAME = bcm2835
|
||||
PACKAGE_STRING = bcm2835 1.58
|
||||
PACKAGE_TARNAME = bcm2835
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION = 1.58
|
||||
PATH_SEPARATOR = :
|
||||
RANLIB = ranlib
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP =
|
||||
VERSION = 1.58
|
||||
abs_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src
|
||||
abs_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src
|
||||
abs_top_builddir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
abs_top_srcdir = /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58
|
||||
ac_ct_CC = gcc
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build_alias =
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host_alias =
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /home/pi/Desktop/Inkycal/inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = $(MKDIR_P)
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
runstatedir = ${localstatedir}/run
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
top_build_prefix = ../
|
||||
top_builddir = ..
|
||||
top_srcdir = ..
|
||||
lib_LIBRARIES = libbcm2835.a
|
||||
libbcm2835_a_SOURCES = bcm2835.c
|
||||
include_HEADERS = bcm2835.h
|
||||
test_SOURCES = test.c
|
||||
test_LDADD = ./libbcm2835.a
|
||||
TESTS = $(check_PROGRAMS)
|
||||
CLEANFILES = *~
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-checkPROGRAMS:
|
||||
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
||||
install-libLIBRARIES: $(lib_LIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
list2=; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
list2="$$list2 $$p"; \
|
||||
else :; fi; \
|
||||
done; \
|
||||
test -z "$$list2" || { \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
|
||||
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
|
||||
@$(POST_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
$(am__strip_dir) \
|
||||
echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
|
||||
( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
clean-libLIBRARIES:
|
||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||
|
||||
libbcm2835.a: $(libbcm2835_a_OBJECTS) $(libbcm2835_a_DEPENDENCIES) $(EXTRA_libbcm2835_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libbcm2835.a
|
||||
$(AM_V_AR)$(libbcm2835_a_AR) libbcm2835.a $(libbcm2835_a_OBJECTS) $(libbcm2835_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libbcm2835.a
|
||||
|
||||
test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES)
|
||||
@rm -f test$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
include ./$(DEPDIR)/bcm2835.Po # am--include-marker
|
||||
include ./$(DEPDIR)/test.Po # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
# $(AM_V_CC)source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
|
||||
# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
# $(AM_V_CC)source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
|
||||
# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
# Recover from deleted '.trs' file; this should ensure that
|
||||
# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
|
||||
# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
|
||||
# to avoid problems with "make -n".
|
||||
.log.trs:
|
||||
rm -f $< $@
|
||||
$(MAKE) $(AM_MAKEFLAGS) $<
|
||||
|
||||
# Leading 'am--fnord' is there to ensure the list of targets does not
|
||||
# expand to empty, as could happen e.g. with make check TESTS=''.
|
||||
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
|
||||
am--force-recheck:
|
||||
@:
|
||||
|
||||
$(TEST_SUITE_LOG): $(TEST_LOGS)
|
||||
@$(am__set_TESTS_bases); \
|
||||
am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
|
||||
redo_bases=`for i in $$bases; do \
|
||||
am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
|
||||
done`; \
|
||||
if test -n "$$redo_bases"; then \
|
||||
redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
|
||||
redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
|
||||
if $(am__make_dryrun); then :; else \
|
||||
rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
if test -n "$$am__remaking_logs"; then \
|
||||
echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
|
||||
"recursion detected" >&2; \
|
||||
elif test -n "$$redo_logs"; then \
|
||||
am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
|
||||
fi; \
|
||||
if $(am__make_dryrun); then :; else \
|
||||
st=0; \
|
||||
errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
|
||||
for i in $$redo_bases; do \
|
||||
test -f $$i.trs && test -r $$i.trs \
|
||||
|| { echo "$$errmsg $$i.trs" >&2; st=1; }; \
|
||||
test -f $$i.log && test -r $$i.log \
|
||||
|| { echo "$$errmsg $$i.log" >&2; st=1; }; \
|
||||
done; \
|
||||
test $$st -eq 0 || exit 1; \
|
||||
fi
|
||||
@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
|
||||
ws='[ ]'; \
|
||||
results=`for b in $$bases; do echo $$b.trs; done`; \
|
||||
test -n "$$results" || results=/dev/null; \
|
||||
all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
|
||||
pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
|
||||
fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
|
||||
skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
|
||||
xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
|
||||
xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
|
||||
error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
|
||||
if test `expr $$fail + $$xpass + $$error` -eq 0; then \
|
||||
success=true; \
|
||||
else \
|
||||
success=false; \
|
||||
fi; \
|
||||
br='==================='; br=$$br$$br$$br$$br; \
|
||||
result_count () \
|
||||
{ \
|
||||
if test x"$$1" = x"--maybe-color"; then \
|
||||
maybe_colorize=yes; \
|
||||
elif test x"$$1" = x"--no-color"; then \
|
||||
maybe_colorize=no; \
|
||||
else \
|
||||
echo "$@: invalid 'result_count' usage" >&2; exit 4; \
|
||||
fi; \
|
||||
shift; \
|
||||
desc=$$1 count=$$2; \
|
||||
if test $$maybe_colorize = yes && test $$count -gt 0; then \
|
||||
color_start=$$3 color_end=$$std; \
|
||||
else \
|
||||
color_start= color_end=; \
|
||||
fi; \
|
||||
echo "$${color_start}# $$desc $$count$${color_end}"; \
|
||||
}; \
|
||||
create_testsuite_report () \
|
||||
{ \
|
||||
result_count $$1 "TOTAL:" $$all "$$brg"; \
|
||||
result_count $$1 "PASS: " $$pass "$$grn"; \
|
||||
result_count $$1 "SKIP: " $$skip "$$blu"; \
|
||||
result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
|
||||
result_count $$1 "FAIL: " $$fail "$$red"; \
|
||||
result_count $$1 "XPASS:" $$xpass "$$red"; \
|
||||
result_count $$1 "ERROR:" $$error "$$mgn"; \
|
||||
}; \
|
||||
{ \
|
||||
echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
|
||||
$(am__rst_title); \
|
||||
create_testsuite_report --no-color; \
|
||||
echo; \
|
||||
echo ".. contents:: :depth: 2"; \
|
||||
echo; \
|
||||
for b in $$bases; do echo $$b; done \
|
||||
| $(am__create_global_log); \
|
||||
} >$(TEST_SUITE_LOG).tmp || exit 1; \
|
||||
mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
|
||||
if $$success; then \
|
||||
col="$$grn"; \
|
||||
else \
|
||||
col="$$red"; \
|
||||
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
|
||||
fi; \
|
||||
echo "$${col}$$br$${std}"; \
|
||||
echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
|
||||
echo "$${col}$$br$${std}"; \
|
||||
create_testsuite_report --maybe-color; \
|
||||
echo "$$col$$br$$std"; \
|
||||
if $$success; then :; else \
|
||||
echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
|
||||
if test -n "$(PACKAGE_BUGREPORT)"; then \
|
||||
echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
|
||||
fi; \
|
||||
echo "$$col$$br$$std"; \
|
||||
fi; \
|
||||
$$success || exit 1
|
||||
|
||||
check-TESTS: $(check_PROGRAMS)
|
||||
@list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
|
||||
@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
|
||||
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
@set +e; $(am__set_TESTS_bases); \
|
||||
log_list=`for i in $$bases; do echo $$i.log; done`; \
|
||||
trs_list=`for i in $$bases; do echo $$i.trs; done`; \
|
||||
log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
|
||||
exit $$?;
|
||||
recheck: all $(check_PROGRAMS)
|
||||
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
@set +e; $(am__set_TESTS_bases); \
|
||||
bases=`for i in $$bases; do echo $$i; done \
|
||||
| $(am__list_recheck_tests)` || exit 1; \
|
||||
log_list=`for i in $$bases; do echo $$i.log; done`; \
|
||||
log_list=`echo $$log_list`; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
|
||||
am__force_recheck=am--force-recheck \
|
||||
TEST_LOGS="$$log_list"; \
|
||||
exit $$?
|
||||
test.log: test$(EXEEXT)
|
||||
@p='test$(EXEEXT)'; \
|
||||
b='test'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
.test.log:
|
||||
@p='$<'; \
|
||||
$(am__set_b); \
|
||||
$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
#.test$(EXEEXT).log:
|
||||
# @p='$<'; \
|
||||
# $(am__set_b); \
|
||||
# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
|
||||
# --log-file $$b.log --trs-file $$b.trs \
|
||||
# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||
# "$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
|
||||
check: check-am
|
||||
all-am: Makefile $(LIBRARIES) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
|
||||
-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
|
||||
-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-checkPROGRAMS clean-generic clean-libLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/bcm2835.Po
|
||||
-rm -f ./$(DEPDIR)/test.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-libLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/bcm2835.Po
|
||||
-rm -f ./$(DEPDIR)/test.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-includeHEADERS uninstall-libLIBRARIES
|
||||
|
||||
.MAKE: check-am install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
|
||||
check-am clean clean-checkPROGRAMS clean-generic \
|
||||
clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
|
||||
distclean-compile distclean-generic distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-includeHEADERS install-info install-info-am \
|
||||
install-libLIBRARIES install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
|
||||
uninstall uninstall-am uninstall-includeHEADERS \
|
||||
uninstall-libLIBRARIES
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@@ -0,0 +1,9 @@
|
||||
lib_LIBRARIES = libbcm2835.a
|
||||
libbcm2835_a_SOURCES = bcm2835.c
|
||||
include_HEADERS = bcm2835.h
|
||||
check_PROGRAMS = test
|
||||
test_SOURCES = test.c
|
||||
test_LDADD = ./libbcm2835.a
|
||||
TESTS = $(check_PROGRAMS)
|
||||
CLEANFILES = *~
|
||||
|
@@ -0,0 +1,987 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
check_PROGRAMS = test$(EXEEXT)
|
||||
subdir = src
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
|
||||
LIBRARIES = $(lib_LIBRARIES)
|
||||
AR = ar
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_@AM_V@)
|
||||
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
am__v_AR_1 =
|
||||
libbcm2835_a_AR = $(AR) $(ARFLAGS)
|
||||
libbcm2835_a_LIBADD =
|
||||
am_libbcm2835_a_OBJECTS = bcm2835.$(OBJEXT)
|
||||
libbcm2835_a_OBJECTS = $(am_libbcm2835_a_OBJECTS)
|
||||
am_test_OBJECTS = test.$(OBJEXT)
|
||||
test_OBJECTS = $(am_test_OBJECTS)
|
||||
test_DEPENDENCIES = ./libbcm2835.a
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/bcm2835.Po ./$(DEPDIR)/test.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(libbcm2835_a_SOURCES) $(test_SOURCES)
|
||||
DIST_SOURCES = $(libbcm2835_a_SOURCES) $(test_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(include_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__tty_colors_dummy = \
|
||||
mgn= red= grn= lgn= blu= brg= std=; \
|
||||
am__color_tests=no
|
||||
am__tty_colors = { \
|
||||
$(am__tty_colors_dummy); \
|
||||
if test "X$(AM_COLOR_TESTS)" = Xno; then \
|
||||
am__color_tests=no; \
|
||||
elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
|
||||
am__color_tests=yes; \
|
||||
elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
|
||||
am__color_tests=yes; \
|
||||
fi; \
|
||||
if test $$am__color_tests = yes; then \
|
||||
red='[0;31m'; \
|
||||
grn='[0;32m'; \
|
||||
lgn='[1;32m'; \
|
||||
blu='[1;34m'; \
|
||||
mgn='[0;35m'; \
|
||||
brg='[1m'; \
|
||||
std='[m'; \
|
||||
fi; \
|
||||
}
|
||||
am__recheck_rx = ^[ ]*:recheck:[ ]*
|
||||
am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
|
||||
am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
|
||||
# A command that, given a newline-separated list of test names on the
|
||||
# standard input, print the name of the tests that are to be re-run
|
||||
# upon "make recheck".
|
||||
am__list_recheck_tests = $(AWK) '{ \
|
||||
recheck = 1; \
|
||||
while ((rc = (getline line < ($$0 ".trs"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
{ \
|
||||
if ((getline line2 < ($$0 ".log")) < 0) \
|
||||
recheck = 0; \
|
||||
break; \
|
||||
} \
|
||||
else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
|
||||
{ \
|
||||
recheck = 0; \
|
||||
break; \
|
||||
} \
|
||||
else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
|
||||
{ \
|
||||
break; \
|
||||
} \
|
||||
}; \
|
||||
if (recheck) \
|
||||
print $$0; \
|
||||
close ($$0 ".trs"); \
|
||||
close ($$0 ".log"); \
|
||||
}'
|
||||
# A command that, given a newline-separated list of test names on the
|
||||
# standard input, create the global log from their .trs and .log files.
|
||||
am__create_global_log = $(AWK) ' \
|
||||
function fatal(msg) \
|
||||
{ \
|
||||
print "fatal: making $@: " msg | "cat >&2"; \
|
||||
exit 1; \
|
||||
} \
|
||||
function rst_section(header) \
|
||||
{ \
|
||||
print header; \
|
||||
len = length(header); \
|
||||
for (i = 1; i <= len; i = i + 1) \
|
||||
printf "="; \
|
||||
printf "\n\n"; \
|
||||
} \
|
||||
{ \
|
||||
copy_in_global_log = 1; \
|
||||
global_test_result = "RUN"; \
|
||||
while ((rc = (getline line < ($$0 ".trs"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
fatal("failed to read from " $$0 ".trs"); \
|
||||
if (line ~ /$(am__global_test_result_rx)/) \
|
||||
{ \
|
||||
sub("$(am__global_test_result_rx)", "", line); \
|
||||
sub("[ ]*$$", "", line); \
|
||||
global_test_result = line; \
|
||||
} \
|
||||
else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
|
||||
copy_in_global_log = 0; \
|
||||
}; \
|
||||
if (copy_in_global_log) \
|
||||
{ \
|
||||
rst_section(global_test_result ": " $$0); \
|
||||
while ((rc = (getline line < ($$0 ".log"))) != 0) \
|
||||
{ \
|
||||
if (rc < 0) \
|
||||
fatal("failed to read from " $$0 ".log"); \
|
||||
print line; \
|
||||
}; \
|
||||
printf "\n"; \
|
||||
}; \
|
||||
close ($$0 ".trs"); \
|
||||
close ($$0 ".log"); \
|
||||
}'
|
||||
# Restructured Text title.
|
||||
am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
|
||||
# Solaris 10 'make', and several other traditional 'make' implementations,
|
||||
# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
|
||||
# by disabling -e (using the XSI extension "set +e") if it's set.
|
||||
am__sh_e_setup = case $$- in *e*) set +e;; esac
|
||||
# Default flags passed to test drivers.
|
||||
am__common_driver_flags = \
|
||||
--color-tests "$$am__color_tests" \
|
||||
--enable-hard-errors "$$am__enable_hard_errors" \
|
||||
--expect-failure "$$am__expect_failure"
|
||||
# To be inserted before the command running the test. Creates the
|
||||
# directory for the log if needed. Stores in $dir the directory
|
||||
# containing $f, in $tst the test, in $log the log. Executes the
|
||||
# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
|
||||
# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
|
||||
# will run the test scripts (or their associated LOG_COMPILER, if
|
||||
# thy have one).
|
||||
am__check_pre = \
|
||||
$(am__sh_e_setup); \
|
||||
$(am__vpath_adj_setup) $(am__vpath_adj) \
|
||||
$(am__tty_colors); \
|
||||
srcdir=$(srcdir); export srcdir; \
|
||||
case "$@" in \
|
||||
*/*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
|
||||
*) am__odir=.;; \
|
||||
esac; \
|
||||
test "x$$am__odir" = x"." || test -d "$$am__odir" \
|
||||
|| $(MKDIR_P) "$$am__odir" || exit $$?; \
|
||||
if test -f "./$$f"; then dir=./; \
|
||||
elif test -f "$$f"; then dir=; \
|
||||
else dir="$(srcdir)/"; fi; \
|
||||
tst=$$dir$$f; log='$@'; \
|
||||
if test -n '$(DISABLE_HARD_ERRORS)'; then \
|
||||
am__enable_hard_errors=no; \
|
||||
else \
|
||||
am__enable_hard_errors=yes; \
|
||||
fi; \
|
||||
case " $(XFAIL_TESTS) " in \
|
||||
*[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
|
||||
am__expect_failure=yes;; \
|
||||
*) \
|
||||
am__expect_failure=no;; \
|
||||
esac; \
|
||||
$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
|
||||
# A shell command to get the names of the tests scripts with any registered
|
||||
# extension removed (i.e., equivalently, the names of the test logs, with
|
||||
# the '.log' extension removed). The result is saved in the shell variable
|
||||
# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
|
||||
# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
|
||||
# since that might cause problem with VPATH rewrites for suffix-less tests.
|
||||
# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
|
||||
am__set_TESTS_bases = \
|
||||
bases='$(TEST_LOGS)'; \
|
||||
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
|
||||
bases=`echo $$bases`
|
||||
RECHECK_LOGS = $(TEST_LOGS)
|
||||
AM_RECURSIVE_TARGETS = check recheck
|
||||
TEST_SUITE_LOG = test-suite.log
|
||||
TEST_EXTENSIONS = @EXEEXT@ .test
|
||||
LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
|
||||
LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
|
||||
am__set_b = \
|
||||
case '$@' in \
|
||||
*/*) \
|
||||
case '$*' in \
|
||||
*/*) b='$*';; \
|
||||
*) b=`echo '$@' | sed 's/\.log$$//'`; \
|
||||
esac;; \
|
||||
*) \
|
||||
b='$*';; \
|
||||
esac
|
||||
am__test_logs1 = $(TESTS:=.log)
|
||||
am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
|
||||
TEST_LOGS = $(am__test_logs2:.test.log=.log)
|
||||
TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
|
||||
TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
|
||||
$(TEST_LOG_FLAGS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
|
||||
$(top_srcdir)/test-driver
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
lib_LIBRARIES = libbcm2835.a
|
||||
libbcm2835_a_SOURCES = bcm2835.c
|
||||
include_HEADERS = bcm2835.h
|
||||
test_SOURCES = test.c
|
||||
test_LDADD = ./libbcm2835.a
|
||||
TESTS = $(check_PROGRAMS)
|
||||
CLEANFILES = *~
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-checkPROGRAMS:
|
||||
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
||||
install-libLIBRARIES: $(lib_LIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
list2=; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
list2="$$list2 $$p"; \
|
||||
else :; fi; \
|
||||
done; \
|
||||
test -z "$$list2" || { \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
|
||||
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
|
||||
@$(POST_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
$(am__strip_dir) \
|
||||
echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
|
||||
( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
clean-libLIBRARIES:
|
||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||
|
||||
libbcm2835.a: $(libbcm2835_a_OBJECTS) $(libbcm2835_a_DEPENDENCIES) $(EXTRA_libbcm2835_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libbcm2835.a
|
||||
$(AM_V_AR)$(libbcm2835_a_AR) libbcm2835.a $(libbcm2835_a_OBJECTS) $(libbcm2835_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libbcm2835.a
|
||||
|
||||
test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES)
|
||||
@rm -f test$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcm2835.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
# Recover from deleted '.trs' file; this should ensure that
|
||||
# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
|
||||
# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
|
||||
# to avoid problems with "make -n".
|
||||
.log.trs:
|
||||
rm -f $< $@
|
||||
$(MAKE) $(AM_MAKEFLAGS) $<
|
||||
|
||||
# Leading 'am--fnord' is there to ensure the list of targets does not
|
||||
# expand to empty, as could happen e.g. with make check TESTS=''.
|
||||
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
|
||||
am--force-recheck:
|
||||
@:
|
||||
|
||||
$(TEST_SUITE_LOG): $(TEST_LOGS)
|
||||
@$(am__set_TESTS_bases); \
|
||||
am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
|
||||
redo_bases=`for i in $$bases; do \
|
||||
am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
|
||||
done`; \
|
||||
if test -n "$$redo_bases"; then \
|
||||
redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
|
||||
redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
|
||||
if $(am__make_dryrun); then :; else \
|
||||
rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
if test -n "$$am__remaking_logs"; then \
|
||||
echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
|
||||
"recursion detected" >&2; \
|
||||
elif test -n "$$redo_logs"; then \
|
||||
am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
|
||||
fi; \
|
||||
if $(am__make_dryrun); then :; else \
|
||||
st=0; \
|
||||
errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
|
||||
for i in $$redo_bases; do \
|
||||
test -f $$i.trs && test -r $$i.trs \
|
||||
|| { echo "$$errmsg $$i.trs" >&2; st=1; }; \
|
||||
test -f $$i.log && test -r $$i.log \
|
||||
|| { echo "$$errmsg $$i.log" >&2; st=1; }; \
|
||||
done; \
|
||||
test $$st -eq 0 || exit 1; \
|
||||
fi
|
||||
@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
|
||||
ws='[ ]'; \
|
||||
results=`for b in $$bases; do echo $$b.trs; done`; \
|
||||
test -n "$$results" || results=/dev/null; \
|
||||
all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
|
||||
pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
|
||||
fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
|
||||
skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
|
||||
xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
|
||||
xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
|
||||
error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
|
||||
if test `expr $$fail + $$xpass + $$error` -eq 0; then \
|
||||
success=true; \
|
||||
else \
|
||||
success=false; \
|
||||
fi; \
|
||||
br='==================='; br=$$br$$br$$br$$br; \
|
||||
result_count () \
|
||||
{ \
|
||||
if test x"$$1" = x"--maybe-color"; then \
|
||||
maybe_colorize=yes; \
|
||||
elif test x"$$1" = x"--no-color"; then \
|
||||
maybe_colorize=no; \
|
||||
else \
|
||||
echo "$@: invalid 'result_count' usage" >&2; exit 4; \
|
||||
fi; \
|
||||
shift; \
|
||||
desc=$$1 count=$$2; \
|
||||
if test $$maybe_colorize = yes && test $$count -gt 0; then \
|
||||
color_start=$$3 color_end=$$std; \
|
||||
else \
|
||||
color_start= color_end=; \
|
||||
fi; \
|
||||
echo "$${color_start}# $$desc $$count$${color_end}"; \
|
||||
}; \
|
||||
create_testsuite_report () \
|
||||
{ \
|
||||
result_count $$1 "TOTAL:" $$all "$$brg"; \
|
||||
result_count $$1 "PASS: " $$pass "$$grn"; \
|
||||
result_count $$1 "SKIP: " $$skip "$$blu"; \
|
||||
result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
|
||||
result_count $$1 "FAIL: " $$fail "$$red"; \
|
||||
result_count $$1 "XPASS:" $$xpass "$$red"; \
|
||||
result_count $$1 "ERROR:" $$error "$$mgn"; \
|
||||
}; \
|
||||
{ \
|
||||
echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
|
||||
$(am__rst_title); \
|
||||
create_testsuite_report --no-color; \
|
||||
echo; \
|
||||
echo ".. contents:: :depth: 2"; \
|
||||
echo; \
|
||||
for b in $$bases; do echo $$b; done \
|
||||
| $(am__create_global_log); \
|
||||
} >$(TEST_SUITE_LOG).tmp || exit 1; \
|
||||
mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
|
||||
if $$success; then \
|
||||
col="$$grn"; \
|
||||
else \
|
||||
col="$$red"; \
|
||||
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
|
||||
fi; \
|
||||
echo "$${col}$$br$${std}"; \
|
||||
echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
|
||||
echo "$${col}$$br$${std}"; \
|
||||
create_testsuite_report --maybe-color; \
|
||||
echo "$$col$$br$$std"; \
|
||||
if $$success; then :; else \
|
||||
echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
|
||||
if test -n "$(PACKAGE_BUGREPORT)"; then \
|
||||
echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
|
||||
fi; \
|
||||
echo "$$col$$br$$std"; \
|
||||
fi; \
|
||||
$$success || exit 1
|
||||
|
||||
check-TESTS: $(check_PROGRAMS)
|
||||
@list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
|
||||
@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
|
||||
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
@set +e; $(am__set_TESTS_bases); \
|
||||
log_list=`for i in $$bases; do echo $$i.log; done`; \
|
||||
trs_list=`for i in $$bases; do echo $$i.trs; done`; \
|
||||
log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
|
||||
exit $$?;
|
||||
recheck: all $(check_PROGRAMS)
|
||||
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
@set +e; $(am__set_TESTS_bases); \
|
||||
bases=`for i in $$bases; do echo $$i; done \
|
||||
| $(am__list_recheck_tests)` || exit 1; \
|
||||
log_list=`for i in $$bases; do echo $$i.log; done`; \
|
||||
log_list=`echo $$log_list`; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
|
||||
am__force_recheck=am--force-recheck \
|
||||
TEST_LOGS="$$log_list"; \
|
||||
exit $$?
|
||||
test.log: test$(EXEEXT)
|
||||
@p='test$(EXEEXT)'; \
|
||||
b='test'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
.test.log:
|
||||
@p='$<'; \
|
||||
$(am__set_b); \
|
||||
$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
@am__EXEEXT_TRUE@.test$(EXEEXT).log:
|
||||
@am__EXEEXT_TRUE@ @p='$<'; \
|
||||
@am__EXEEXT_TRUE@ $(am__set_b); \
|
||||
@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
|
||||
@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
|
||||
@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
|
||||
check: check-am
|
||||
all-am: Makefile $(LIBRARIES) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
|
||||
-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
|
||||
-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-checkPROGRAMS clean-generic clean-libLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/bcm2835.Po
|
||||
-rm -f ./$(DEPDIR)/test.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-libLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/bcm2835.Po
|
||||
-rm -f ./$(DEPDIR)/test.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-includeHEADERS uninstall-libLIBRARIES
|
||||
|
||||
.MAKE: check-am install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
|
||||
check-am clean clean-checkPROGRAMS clean-generic \
|
||||
clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
|
||||
distclean-compile distclean-generic distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-includeHEADERS install-info install-info-am \
|
||||
install-libLIBRARIES install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
|
||||
uninstall uninstall-am uninstall-includeHEADERS \
|
||||
uninstall-libLIBRARIES
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
1853
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src/bcm2835.c
Normal file
1917
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src/bcm2835.h
Normal file
BIN
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src/test
Normal file
@@ -0,0 +1,20 @@
|
||||
======================================
|
||||
bcm2835 1.58: src/test-suite.log
|
||||
======================================
|
||||
|
||||
# TOTAL: 1
|
||||
# PASS: 0
|
||||
# SKIP: 0
|
||||
# XFAIL: 0
|
||||
# FAIL: 1
|
||||
# XPASS: 0
|
||||
# ERROR: 0
|
||||
|
||||
.. contents:: :depth: 2
|
||||
|
||||
FAIL: test
|
||||
==========
|
||||
|
||||
bcm2835_init: gpio mmap failed: Cannot allocate memory
|
||||
FAIL test (exit status: 1)
|
||||
|
@@ -0,0 +1,31 @@
|
||||
// Test program for bcm2835 library
|
||||
// You can only expect this to run correctly
|
||||
// as root on Raspberry Pi hardware, but it will compile and run with little effect
|
||||
// on other hardware
|
||||
//
|
||||
// Author: Mike McCauley
|
||||
// Copyright (C) 2011-2013 Mike McCauley
|
||||
// $Id: test.c,v 1.6 2018/01/16 21:55:07 mikem Exp $
|
||||
|
||||
#include <bcm2835.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (geteuid() == 0 && !getenv("FAKEROOTKEY"))
|
||||
{
|
||||
if (!bcm2835_init())
|
||||
return 1;
|
||||
if (!bcm2835_close())
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "****You need to be root to properly run this test program\n");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@@ -0,0 +1,2 @@
|
||||
bcm2835_init: gpio mmap failed: Cannot allocate memory
|
||||
FAIL test (exit status: 1)
|
BIN
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/src/test.o
Normal file
@@ -0,0 +1,4 @@
|
||||
:test-result: FAIL
|
||||
:global-test-result: FAIL
|
||||
:recheck: yes
|
||||
:copy-in-global-log: yes
|
@@ -0,0 +1 @@
|
||||
timestamp for config.h
|
148
inkycal/display/drivers/9_in_7_drivers/bcm2835-1.58/test-driver
Normal file
@@ -0,0 +1,148 @@
|
||||
#! /bin/sh
|
||||
# test-driver - basic testsuite driver script.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 2011-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# 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 2, 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
# Make unconditional expansion of undefined variables an error. This
|
||||
# helps a lot in preventing typo-related bugs.
|
||||
set -u
|
||||
|
||||
usage_error ()
|
||||
{
|
||||
echo "$0: $*" >&2
|
||||
print_usage >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
print_usage ()
|
||||
{
|
||||
cat <<END
|
||||
Usage:
|
||||
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
|
||||
[--expect-failure={yes|no}] [--color-tests={yes|no}]
|
||||
[--enable-hard-errors={yes|no}] [--]
|
||||
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
|
||||
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
|
||||
END
|
||||
}
|
||||
|
||||
test_name= # Used for reporting.
|
||||
log_file= # Where to save the output of the test script.
|
||||
trs_file= # Where to save the metadata of the test run.
|
||||
expect_failure=no
|
||||
color_tests=no
|
||||
enable_hard_errors=yes
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
--help) print_usage; exit $?;;
|
||||
--version) echo "test-driver $scriptversion"; exit $?;;
|
||||
--test-name) test_name=$2; shift;;
|
||||
--log-file) log_file=$2; shift;;
|
||||
--trs-file) trs_file=$2; shift;;
|
||||
--color-tests) color_tests=$2; shift;;
|
||||
--expect-failure) expect_failure=$2; shift;;
|
||||
--enable-hard-errors) enable_hard_errors=$2; shift;;
|
||||
--) shift; break;;
|
||||
-*) usage_error "invalid option: '$1'";;
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
missing_opts=
|
||||
test x"$test_name" = x && missing_opts="$missing_opts --test-name"
|
||||
test x"$log_file" = x && missing_opts="$missing_opts --log-file"
|
||||
test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
|
||||
if test x"$missing_opts" != x; then
|
||||
usage_error "the following mandatory options are missing:$missing_opts"
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
usage_error "missing argument"
|
||||
fi
|
||||
|
||||
if test $color_tests = yes; then
|
||||
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
|
||||
red='[0;31m' # Red.
|
||||
grn='[0;32m' # Green.
|
||||
lgn='[1;32m' # Light green.
|
||||
blu='[1;34m' # Blue.
|
||||
mgn='[0;35m' # Magenta.
|
||||
std='[m' # No color.
|
||||
else
|
||||
red= grn= lgn= blu= mgn= std=
|
||||
fi
|
||||
|
||||
do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
|
||||
trap "st=129; $do_exit" 1
|
||||
trap "st=130; $do_exit" 2
|
||||
trap "st=141; $do_exit" 13
|
||||
trap "st=143; $do_exit" 15
|
||||
|
||||
# Test script is run here.
|
||||
"$@" >$log_file 2>&1
|
||||
estatus=$?
|
||||
|
||||
if test $enable_hard_errors = no && test $estatus -eq 99; then
|
||||
tweaked_estatus=1
|
||||
else
|
||||
tweaked_estatus=$estatus
|
||||
fi
|
||||
|
||||
case $tweaked_estatus:$expect_failure in
|
||||
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
|
||||
0:*) col=$grn res=PASS recheck=no gcopy=no;;
|
||||
77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
|
||||
99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
|
||||
*:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
|
||||
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
|
||||
esac
|
||||
|
||||
# Report the test outcome and exit status in the logs, so that one can
|
||||
# know whether the test passed or failed simply by looking at the '.log'
|
||||
# file, without the need of also peaking into the corresponding '.trs'
|
||||
# file (automake bug#11814).
|
||||
echo "$res $test_name (exit status: $estatus)" >>$log_file
|
||||
|
||||
# Report outcome to console.
|
||||
echo "${col}${res}${std}: $test_name"
|
||||
|
||||
# Register the test result, and other relevant metadata.
|
||||
echo ":test-result: $res" > $trs_file
|
||||
echo ":global-test-result: $res" >> $trs_file
|
||||
echo ":recheck: $recheck" >> $trs_file
|
||||
echo ":copy-in-global-log: $gcopy" >> $trs_file
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|