diff --git a/configure.sh b/configure.sh index 25ce9f21087a615e33319532d67bb3e9f7dd67eb..81ad84d9eac1d4cbaf3ccb24ddec510cc36e3020 100755 --- a/configure.sh +++ b/configure.sh @@ -5,7 +5,8 @@ set -e usage() { printf 'Usage %s ' "${1}"; - printf '[-h|--help] [-d|--debug] \n\t\t[-c \033[4mcflags\033[m] '; + printf '[-h|--help] [-d|--debug] [-n|--no-wiringpi]\n'; + printf '\t\t[-c \033[4mcflags\033[m] '; printf '[-l \033[4mldlibs\033[m] '; printf '[--ldflags \033[4mldflags\033[m]\n\t\t'; printf '[-p \033[4mpkgconfig package\033[m] '; @@ -14,8 +15,8 @@ usage() { } -ARGS=$(getopt -o "hdc:l:p:" \ - --long "help,debug,cflags:,ldlibs:,ldflags:,pkg:,cc:" \ +ARGS=$(getopt -o "hdnc:l:p:" \ + --long "help,debug,no-wiringpi,cflags:,ldlibs:,ldflags:,pkg:,cc:" \ -n "$0" -- "$@"); if [ "$?" -ne "0" ]; then exit 1; @@ -39,6 +40,12 @@ while true; do shift; ;; + '-n'|'--no-wiringpi') + CFLAGS="${CFLAGS} -DNO_WIRINGPI"; + NO_WIRINGPI=1; + shift; + ;; + '-c'|'--cflags') CFLAGS="${CFLAGS} ${2}"; shift 2; @@ -107,7 +114,10 @@ CFLAGS="${CFLAGS} -Wno-expansion-to-defined"; CFLAGS="${CFLAGS} -D_GNU_SOURCE"; CFLAGS="${CFLAGS} -I${srcdir}/inc -Iinc"; CFLAGS="${CFLAGS} $(pkg-config --cflags ${PKGS})"; -LDLIBS="${LDLIBS} -lm -lwiringPi $(pkg-config --libs ${PKGS})"; +LDLIBS="${LDLIBS} -lm $(pkg-config --libs ${PKGS})"; +if [ -z "${NO_WIRINGPI}" ]; then + LDLIBS="${LDLIBS} -lwiringPi" +fi { diff --git a/src/main.c b/src/main.c index 5ee8f2de7c3cc12791d914ed6cd94ab504ba27ea..c1d6d9352cf858a38a86e6aff9826aadeef19ce5 100644 --- a/src/main.c +++ b/src/main.c @@ -4,7 +4,9 @@ #include <adwaita.h> #include <stdio.h> +#ifndef NO_WIRINGPI #include <wiringPi.h> +#endif /* BAD GLOBAL VARIABLES */ @@ -12,17 +14,21 @@ static GameApp* app = NULL; /* PROTOTYPES!!! */ +#ifndef NO_WIRINGPI static int button_down_cb( void* pin ); static int button_up_cb( void* pin ); static void isr_g1(); static void isr_r1(); static void isr_g2(); static void isr_r2(); +#endif /* PUBLIC FUNK!!! */ int main( int argc, char** argv ) { +#ifndef NO_WIRINGPI + wiringPiSetupPinType( WPI_PIN_BCM ); pinMode( LED_G1, OUTPUT ); @@ -53,9 +59,13 @@ int main( int argc, char** argv ) { wiringPiISR( BUTTON_G2, INT_EDGE_BOTH, &isr_g2 ); wiringPiISR( BUTTON_R2, INT_EDGE_BOTH, &isr_r2 ); +#endif + app = game_app_new(); int ret = g_application_run( G_APPLICATION( app ), argc, argv ); +#ifndef NO_WIRINGPI + digitalWrite( LED_G1, LOW ); digitalWrite( LED_R1, LOW ); digitalWrite( LED_G2, LOW ); @@ -65,12 +75,16 @@ int main( int argc, char** argv ) { digitalWrite( LED_G4, LOW ); digitalWrite( LED_R4, LOW ); +#endif + return ret; } /* PRIVATE FUNK!!! */ +#ifndef NO_WIRINGPI + static int button_down_cb( void* pin ) { game_app_button_press( app, *( (int*) pin ) ); @@ -130,3 +144,5 @@ static void isr_r2() { } } + +#endif diff --git a/src/window.c b/src/window.c index f0c0a6856397573e1d77565d9aa60dddf083c280..394f04585313df6a4e036f43f800e26980489a54 100644 --- a/src/window.c +++ b/src/window.c @@ -5,7 +5,9 @@ #include <assert.h> #include <librsvg/rsvg.h> #include <pango/pangocairo.h> +#ifndef NO_WIRINGPI #include <wiringPi.h> +#endif /* TYPES!!! */ @@ -71,7 +73,9 @@ static void draw( GtkDrawingArea* area, cairo_t* cr, static void set_cario_colour( cairo_t* cr, enum colour colour ); static int bounce_reset( void* data ); +#ifndef NO_WIRINGPI static int light( void* data ); +#endif /* PUBLIC FUNK!!! */ @@ -232,6 +236,8 @@ static void realise( GtkWidget* widget, void* data ) { static void handle_press( GameWindow* window, int pin ) { +#ifndef NO_WIRINGPI + if ( !digitalRead( BUTTON_G1 ) && !digitalRead( BUTTON_R1 ) && !digitalRead( BUTTON_G2 ) && !digitalRead( BUTTON_R2 ) ) { @@ -397,6 +403,12 @@ static void handle_press( GameWindow* window, int pin ) { } +#else + + (void) pin; + +#endif + gtk_widget_queue_draw( GTK_WIDGET( window->area ) ); } @@ -520,6 +532,8 @@ static void set_cario_colour( cairo_t* cr, enum colour colour ) { static int bounce_reset( void* data ) { +#ifndef NO_WIRINGPI + struct button_state* state = (struct button_state*) data; state->bouncing = false; @@ -554,10 +568,17 @@ static int bounce_reset( void* data ) { fprintf( stderr, "\n" ); } +#else + + (void) data; + +#endif + return G_SOURCE_REMOVE; } +#ifndef NO_WIRINGPI static int light( void* data ) { GameWindow* window = (GameWindow*) data; @@ -584,3 +605,4 @@ static int light( void* data ) { return G_SOURCE_REMOVE; } +#endif