From b683a9305ba0e665e3c5abc6a5fe9d4d6fd85cb8 Mon Sep 17 00:00:00 2001 From: yabause Date: Thu, 12 Oct 2006 21:59:58 +0000 Subject: [PATCH] Fixed linux version (cli and gtk interfaces). Hope I didn't broke anything. The gtk gui is still in C++, so I had to add some extern "C" to compile it, they may be removed when it will be rewrote in C. --- desmume/compile | 142 ++++++++++++++++++++++++++++++++++++ desmume/src/MMU.h | 8 ++ desmume/src/NDSSystem.h | 8 ++ desmume/src/armcpu.h | 8 ++ desmume/src/cflash.h | 8 +- desmume/src/cli/Makefile.am | 2 +- desmume/src/cli/main.c | 2 +- 7 files changed, 175 insertions(+), 3 deletions(-) create mode 100755 desmume/compile diff --git a/desmume/compile b/desmume/compile new file mode 100755 index 000000000..1b1d23216 --- /dev/null +++ b/desmume/compile @@ -0,0 +1,142 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2005-05-14.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# 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 or send patches to +# . + +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 . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; +esac + +ofile= +cfile= +eat= + +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 -e 's|^.*/||' -e '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 + mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# 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-end: "$" +# End: diff --git a/desmume/src/MMU.h b/desmume/src/MMU.h index 9fa7650a4..ec3eb7fd1 100644 --- a/desmume/src/MMU.h +++ b/desmume/src/MMU.h @@ -29,6 +29,10 @@ #include "nds/serial.h" #include "mc.h" +#ifdef __cplusplus +extern "C" { +#endif + extern char szRomPath[512]; /* theses macros are designed for reading/writing in memory (m is a pointer to memory, like MMU.MMU_MEM[proc], and a is an adress, like 0x04000000 */ @@ -122,4 +126,8 @@ void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val); void FASTCALL MMU_doDMA(u32 proc, u32 num); +#ifdef __cplusplus +} +#endif + #endif diff --git a/desmume/src/NDSSystem.h b/desmume/src/NDSSystem.h index acae9c5b8..2695742ce 100644 --- a/desmume/src/NDSSystem.h +++ b/desmume/src/NDSSystem.h @@ -27,6 +27,10 @@ #include "arm9/GPU.h" +#ifdef __cplusplus +extern "C" { +#endif + extern BOOL execute; extern BOOL click; @@ -798,4 +802,8 @@ void NDS_releasTouch(void); return nds.cycles; } +#ifdef __cplusplus +} +#endif + #endif diff --git a/desmume/src/armcpu.h b/desmume/src/armcpu.h index 0ecef50f9..450f2fc1b 100644 --- a/desmume/src/armcpu.h +++ b/desmume/src/armcpu.h @@ -26,6 +26,10 @@ #include "bits.h" #include "MMU.h" +#ifdef __cplusplus +extern "C" { +#endif + #define ARMCPU_ARM7 1 #define ARMCPU_ARM9 0 @@ -167,4 +171,8 @@ static INLINE void NDS_makeARM7Int(u32 num) NDS_ARM7.wIRQ = TRUE; } +#ifdef __cplusplus +} +#endif + #endif diff --git a/desmume/src/cflash.h b/desmume/src/cflash.h index fc7234cb5..16f605154 100644 --- a/desmume/src/cflash.h +++ b/desmume/src/cflash.h @@ -8,6 +8,10 @@ #include "fat.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { int level,parent,filesInDir; } FILE_INFO; @@ -21,6 +25,8 @@ void cflash_write(unsigned int address,unsigned int data); void cflash_close(); - +#ifdef __cplusplus +} +#endif #endif diff --git a/desmume/src/cli/Makefile.am b/desmume/src/cli/Makefile.am index d163e9015..d52ee71ea 100644 --- a/desmume/src/cli/Makefile.am +++ b/desmume/src/cli/Makefile.am @@ -1,4 +1,4 @@ bin_PROGRAMS = desmume-cli desmume_cli_SOURCES = main.c desmume_cli_LDADD = ../libdesmume.a $(SDL_LIBS) -desmume_cli_CXXFLAGS = $(SDL_CFLAGS) +desmume_cli_CFLAGS = $(SDL_CFLAGS) diff --git a/desmume/src/cli/main.c b/desmume/src/cli/main.c index b7a1c6812..bd006730a 100644 --- a/desmume/src/cli/main.c +++ b/desmume/src/cli/main.c @@ -5,7 +5,7 @@ #include "../MMU.h" #include "../NDSSystem.h" -#include "../windows/cflash.h" +#include "../cflash.h" #include "../debug.h" BOOL execute = FALSE;