diff options
author | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2013-09-12 15:48:39 +0000 |
---|---|---|
committer | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2013-09-12 15:48:39 +0000 |
commit | 60590298a29b8f9977b6aaa31b54b7f177a969e5 (patch) | |
tree | 38e32d281cb3e396de0ae7783ed71fce2d9c9ff5 | |
parent | 0ba2c91bbb8561e3ffe702fd60ab625b12d27c4e (diff) | |
download | flashrom-60590298a29b8f9977b6aaa31b54b7f177a969e5.zip flashrom-60590298a29b8f9977b6aaa31b54b7f177a969e5.tar.gz |
BSD refinements
Make it easier to compile flashrom under NetBSD and DragonFlyBSD:
- Use /usr/pkg/ as prefix for includes and linking
- Use pciutils as include path for the right(tm) libpci
Also, fix date handling in getrevision.sh to work with the various formats for
invoking 'date'. This also uses svn's info --xml output instead of the regular one.
Tested-by: Idwer Vollering <vidwer@gmail.com>
Corresponding to flashrom svn r1742.
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
-rw-r--r-- | Makefile | 14 | ||||
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | hwaccess.h | 6 | ||||
-rwxr-xr-x | util/getrevision.sh | 40 |
4 files changed, 56 insertions, 10 deletions
@@ -98,6 +98,16 @@ CPPFLAGS += -I/usr/local/include LDFLAGS += -L/usr/local/lib endif +ifeq ($(TARGET_OS), NetBSD) +CPPFLAGS += -I/usr/pkg/include +LDFLAGS += -L/usr/pkg/lib +endif + +ifeq ($(TARGET_OS), DragonFlyBSD) +CPPFLAGS += -I/usr/pkg/include +LDFLAGS += -L/usr/pkg/lib +endif + ifeq ($(TARGET_OS), DOS) EXEC_SUFFIX := .exe CPPFLAGS += -I$(DOSLIBS_BASE)/libgetopt @@ -743,7 +753,11 @@ endif define LIBPCI_TEST /* Avoid a failing test due to libpci header symbol shadowing breakage */ #define index shadow_workaround_index +#if !defined __NetBSD__ && !defined __DragonFly__ #include <pci/pci.h> +#else +#include <pciutils/pci.h> +#endif struct pci_access *pacc; int main(int argc, char **argv) { @@ -80,11 +80,9 @@ To compile on Solaris, use: gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2 -To compile on NetBSD or DragonFly BSD, use: +To compile on NetBSD or DragonFly BSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use: - ln -s /usr/pkg/include/pciutils pci - gmake CPPFLAGS="-I. -I/usr/pkg/include" \ - LDFLAGS="-L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib" + gmake To compile on OpenBSD, use: @@ -37,7 +37,13 @@ * or as builtin. */ #define index shadow_workaround_index + +#if !defined (__NetBSD__) && !defined (__DragonFly__) #include <pci/pci.h> +#else +#include <pciutils/pci.h> +#endif + #undef index #endif diff --git a/util/getrevision.sh b/util/getrevision.sh index c05f59e..709e45f 100755 --- a/util/getrevision.sh +++ b/util/getrevision.sh @@ -110,15 +110,33 @@ scm_url() { timestamp() { local t + # date syntaxes are manifold: + # gnu date [-d input]... [+FORMAT] + # netbsd date [-ajnu] [-d date] [-r seconds] [+format] [[[[[[CC]yy]mm]dd]HH]MM[.SS]] + # freebsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] + # dragonflybsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] + # openbsd date [-aju] [-d dst] [-r seconds] [+format] [[[[[[cc]yy]mm]dd]HH]MM[.SS]] [...] if svn_is_file_tracked "$2" ; then if svn_has_local_changes "$2"; then t=$(date -u "$1") else - # No local changes, get date of the last log record. - local last_commit_date="$(svn info "$2" | \ - grep '^Last Changed Date:' | \ - awk '{print $4" "$5" "$6}')" - t=$(date -d "${last_commit_date}" -u "$1") + # No local changes, get date of the last log record. Subversion provides that in + # ISO 8601 format when using the --xml switch. The sed call extracts that ignoring any + # fractional parts started by a comma or a dot. + local last_commit_date="$(svn info --xml "$2"| \ + sed -n -e 's/<date>\([^,\.]*\)\([\.,].*\)*Z<\/date>/\1Z/p')" + + case $(uname) in + # Most BSD dates do not support parsing date values from user input with -d but all of + # them support parsing the syntax with [[[[[[cc]yy]mm]dd]HH]MM[.ss]]. We have to + # transform the ISO8601 date first though. + NetBSD|OpenBSD|DragonFly|FreeBSD) + last_commit_date="$(echo ${last_commit_date} | \ + sed -n -e 's/\(....\)-\(..\)-\(..\)T\(..\):\(..\):\(..\)Z/\1\2\3\4\5\.\6/p')" + t=$(date -u -j "${last_commit_date}" "$1" 2>/dev/null);; + *) + t=$(date -u -d "${last_commit_date}" "$1" 2>/dev/null);; + esac fi elif git_is_file_tracked "$2" ; then # are there local changes? @@ -126,12 +144,22 @@ timestamp() { t=$(date -u "${1}") else # No local changes, get date of the last commit - t=$(date -d "$(git log --pretty=format:"%cD" -1 -- "$2")" -u "$1") + case $(uname) in + # Most BSD dates do not support parsing date values from user input with -d but all of + # them support parsing epoch seconds with -r. Thanks to git we can easily use that: + NetBSD|OpenBSD|DragonFly|FreeBSD) + t=$(date -u -r "$(git log --pretty=format:%ct -1 -- $2)" "$1" 2>/dev/null);; + *) + t=$(date -d "$(git log --pretty=format:%cD -1 -- $2)" -u "$1" 2>/dev/null);; + esac fi else t=$(date -u "$1") fi + if [ -z "$t" ]; then + echo "Warning: Could not determine timestamp." 2>/dev/null + fi echo "${t}" } |