From fb345e983e644ed54dc16419dc86efb39afeaa1a Mon Sep 17 00:00:00 2001 From: bjarni Date: Wed, 22 Dec 2004 21:12:36 +0000 Subject: [PATCH] (svn r1236) MorphOS: added make release like in OSX (tokai) MorphOS: cleaned up the code telling the difference between AmigaOS and MorphOS (tokai) --- Makefile | 32 ++++++++++++++++ dedicated.c | 9 ++++- intro_gui.c | 2 +- misc.c | 14 +++---- network.c | 68 +++++++++++++++++++-------------- network_core.h | 16 ++++++-- os/morphos/icons/OpenTTD.info | Bin 0 -> 8110 bytes os/morphos/icons/docs.info | Bin 0 -> 5390 bytes os/morphos/icons/document.info | Bin 0 -> 4451 bytes os/morphos/icons/drawer.info | Bin 0 -> 5390 bytes stdafx.h | 23 ++++++++++- ttd.c | 11 +++++- unix.c | 5 +++ 13 files changed, 137 insertions(+), 43 deletions(-) create mode 100755 os/morphos/icons/OpenTTD.info create mode 100755 os/morphos/icons/docs.info create mode 100644 os/morphos/icons/document.info create mode 100755 os/morphos/icons/drawer.info diff --git a/Makefile b/Makefile index e974e4920a..e63ee0526f 100644 --- a/Makefile +++ b/Makefile @@ -748,6 +748,38 @@ lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt winres.o: ttd.rc windres -o $@ $< +ifdef MORPHOS +release: all + @rm -fr "/t/openttd-$(RELEASE)-morphos.lha" + @mkdir -p "/t/" + @mkdir -p "/t/openttd-$(RELEASE)-morphos" + @mkdir -p "/t/openttd-$(RELEASE)-morphos/docs" + @mkdir -p "/t/openttd-$(RELEASE)-morphos/data" + @mkdir -p "/t/openttd-$(RELEASE)-morphos/lang" + @cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/" + @cp data/* "/t/openttd-$(RELEASE)-morphos/data/" + @cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/" + @cp readme.txt "/t/openttd-$(RELEASE)-morphos/docs/ReadMe" + @cp docs/console.txt "/t/openttd-$(RELEASE)-morphos/docs/Console" + @cp COPYING "/t/openttd-$(RELEASE)-morphos/docs/" + @cp changelog.txt "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog" + @cp os/morphos/icons/openttd.info "/t/openttd-$(RELEASE)-morphos/$(TTD).info" + @cp os/morphos/icons/docs.info "/t/openttd-$(RELEASE)-morphos/docs.info" + @cp os/morphos/icons/drawer.info "/t/openttd-$(RELEASE)-morphos.info" + @cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ReadMe.info" + @cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/Console.info" + @cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/COPYING.info" + @cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog.info" + @strip --strip-all --strip-unneeded --remove-section .comment "/t/openttd-$(RELEASE)-morphos/$(TTD)" + @lha a -r "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos" + @lha a "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos.info" + @rm -fr "/t/openttd-$(RELEASE)-morphos" + @rm -fr "/t/openttd-$(RELEASE)-morphos.info" + @echo "Release archive can be found in RAM:t/ now." + +.PHONY: release +endif + ifdef OSX release: all @mkdir -p "OpenTTD $(RELEASE)" diff --git a/dedicated.c b/dedicated.c index 5197dd924c..051573bee7 100644 --- a/dedicated.c +++ b/dedicated.c @@ -20,6 +20,13 @@ # include # define STDIN 0 /* file descriptor for standard input */ #endif +#ifdef __MORPHOS__ +/* voids the fork, option will be disabled for morphos build anyway, because MorphOS + * doesn't support forking (could only implemented with lots of code changes here). + */ +int morphos_dummy_fork() { return -1; } +#define fork morphos_dummy_fork +#endif // This file handles all dedicated-server in- and outputs @@ -167,7 +174,7 @@ static int DedicatedVideoMainLoop() next_tick = (tim.tv_usec / 1000) + 30 + (tim.tv_sec * 1000); #endif - /* Siganl handlers */ + /* Signal handlers */ #ifdef UNIX signal(SIGTERM, DedicatedSignalHandler); signal(SIGINT, DedicatedSignalHandler); diff --git a/intro_gui.c b/intro_gui.c index 74716f0ca4..a4f77fcb03 100644 --- a/intro_gui.c +++ b/intro_gui.c @@ -198,7 +198,7 @@ static void AskAbandonGameWndProc(Window *w, WindowEvent *e) { SetDParam(0, STR_OSNAME_BEOS); #elif defined(__MORPHOS__) SetDParam(0, STR_OSNAME_MORPHOS); -#elif defined(__AMIGA__) /* note: __AMIGA__ is defined under MorphOS too, so it must be after __MORPHOS__. */ +#elif defined(__AMIGA__) SetDParam(0, STR_OSNAME_AMIGAOS); #else SetDParam(0, STR_0134_UNIX); diff --git a/misc.c b/misc.c index 8ce6e8ce01..dcb18656dc 100644 --- a/misc.c +++ b/misc.c @@ -107,14 +107,14 @@ void SetDate(uint date) // multi os compatible sleep function -#if defined(__AMIGA__) +#ifdef __AMIGA__ // usleep() implementation # include # include - static struct Device *TimerBase = NULL; - static struct MsgPort *TimerPort = NULL; - static struct timerequest *TimerRequest = NULL; + extern struct Device *TimerBase = NULL; + extern struct MsgPort *TimerPort = NULL; + extern struct timerequest *TimerRequest = NULL; #endif // __AMIGA__ void CSleep(int milliseconds) @@ -123,13 +123,13 @@ void CSleep(int milliseconds) Sleep(milliseconds); #endif #if defined(UNIX) - #if !defined(__BEOS__) && !defined(__AMIGAOS__) + #if !defined(__BEOS__) && !defined(__AMIGA__) usleep(milliseconds * 1000); #endif #ifdef __BEOS__ snooze(milliseconds * 1000); #endif - #if defined(__AMIGAOS__) && !defined(__MORPHOS__) + #if defined(__AMIGA__) { ULONG signals; ULONG TimerSigBit = 1 << TimerPort->mp_SigBit; @@ -145,7 +145,7 @@ void CSleep(int milliseconds) } WaitIO((struct IORequest *)TimerRequest); } - #endif // __AMIGAOS__ && !__MORPHOS__ + #endif // __AMIGA__ #endif } diff --git a/network.c b/network.c index 46f8dddb3c..3f2d1e9d4b 100644 --- a/network.c +++ b/network.c @@ -23,6 +23,11 @@ #include /* va_list */ #include "md5.h" +#ifdef __MORPHOS__ +// the library base is required here +struct Library *SocketBase = NULL; +#endif + // The listen socket for the server static SOCKET _listensocket; @@ -1255,7 +1260,39 @@ static void NetworkGenerateUniqueId(void) void NetworkStartUp(void) { DEBUG(net, 3) ("[NET][Core] Starting network..."); - // Network is available + + #if defined(__MORPHOS__) || defined(__AMIGA__) + /* + * IMPORTANT NOTE: SocketBase needs to be initialized before we use _any_ + * network related function, else: crash. + */ + { + DEBUG(misc,3) ("[NET][Core] Loading bsd socket library"); + if (!(SocketBase = OpenLibrary("bsdsocket.library", 4))) { + DEBUG(net, 0) ("[NET][Core] Error: couldn't open bsdsocket.library version 4. Network not available."); + _network_available = false; + return; + } + + #if defined(__AMIGA__) + // for usleep() implementation (only required for legacy AmigaOS builds) + if ( (TimerPort = CreateMsgPort()) ) { + if ( (TimerRequest = (struct timerequest *) CreateIORequest(TimerPort, sizeof(struct timerequest))) ) { + if ( OpenDevice("timer.device", UNIT_MICROHZ, (struct IORequest *) TimerRequest, 0) == 0 ) { + if ( !(TimerBase = TimerRequest->tr_node.io_Device) ) { + // free ressources... + DEBUG(net, 0) ("[NET][Core] Error: couldn't initialize timer. Network not available."); + _network_available = false; + return; + } + } + } + } + #endif // __AMIGA__ + } + #endif // __MORPHOS__ / __AMIGA__ + + // Network is available _network_available = true; _network_dedicated = false; _network_last_advertise_date = 0; @@ -1287,33 +1324,6 @@ void NetworkStartUp(void) return; } } - #else - #if defined(__MORPHOS__) || defined(__AMIGA__) - { - DEBUG(misc,3) ("[NET][Core] Loading bsd socket library"); - if (!(SocketBase = OpenLibrary("bsdsocket.library", 4))) { - DEBUG(net, 0) ("[NET][Core] Error: couldn't open bsdsocket.library version 4. Network not available."); - _network_available = false; - return; - } - - #if defined(__AMIGA__) - // for usleep() implementation (only required for legacy AmigaOS builds) - if ( (TimerPort = CreateMsgPort()) ) { - if ( (TimerRequest = (struct timerequest *) CreateIORequest(TimerPort, sizeof(struct timerequest))) ) { - if ( OpenDevice("timer.device", UNIT_MICROHZ, (struct IORequest *) TimerRequest, 0) == 0 ) { - if ( !(TimerBase = TimerRequest->tr_node.io_Device) ) { - // free ressources... - DEBUG(net, 0) ("[NET][Core] Error: couldn't initialize timer. Network not available."); - _network_available = false; - return; - } - } - } - } - #endif // __AMIGA__ - } - #endif // __MORPHOS__ / __AMIGA__ #endif // WIN32 NetworkInitialize(); @@ -1331,7 +1341,7 @@ void NetworkShutDown(void) #if defined(__MORPHOS__) || defined(__AMIGA__) { // free allocated ressources - #if !defined(__MORPHOS__) + #if defined(__AMIGA__) if (TimerBase) { CloseDevice((struct IORequest *) TimerRequest); } if (TimerRequest) { DeleteIORequest(TimerRequest); } if (TimerPort) { DeleteMsgPort(TimerPort); } diff --git a/network_core.h b/network_core.h index 37c51cd5d3..4eaea2d81d 100644 --- a/network_core.h +++ b/network_core.h @@ -52,7 +52,7 @@ typedef struct ifreq IFREQ; # include # include # include -# if !defined(SUNOS) +# if !defined(SUNOS) && !defined(__MORPHOS__) # include // If for any reason ifaddrs.h does not exist on a system, remove define below // and an other system will be used to fetch ips from the system @@ -71,7 +71,8 @@ typedef struct ifreq IFREQ; # include # include // required for Open/CloseLibrary() # if defined(__MORPHOS__) -# include // FION#? defines +# include // FIO* defines +# include // SIO* defines # else // __AMIGA__ # include # endif @@ -80,8 +81,17 @@ typedef struct ifreq IFREQ; # define closesocket(s) CloseSocket(s) # define GET_LAST_ERROR() Errno() # define ioctlsocket(s,request,status) IoctlSocket((LONG)s,(ULONG)request,(char*)status) +# define ioctl ioctlsocket - struct Library *SocketBase = NULL; + typedef unsigned int in_addr_t; + extern struct Library *SocketBase; + +# ifdef __AMIGA__ + // for usleep() implementation + extern struct Device *TimerBase; + extern struct MsgPort *TimerPort; + extern struct timerequest *TimerRequest; +# endif #endif // __MORPHOS__ || __AMIGA__ #endif // NETWORK_CORE_H diff --git a/os/morphos/icons/OpenTTD.info b/os/morphos/icons/OpenTTD.info new file mode 100755 index 0000000000000000000000000000000000000000..fd6cafa49a61bd03455e983d0041c6f1c558af51 GIT binary patch literal 8110 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 IM6N<$f+V4goB#j- literal 0 HcmV?d00001 diff --git a/os/morphos/icons/docs.info b/os/morphos/icons/docs.info new file mode 100755 index 0000000000000000000000000000000000000000..6f8ac00f2d942794ce19bd8b785913595d64f7c8 GIT binary patch literal 5390 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 literal 0 HcmV?d00001 diff --git a/os/morphos/icons/document.info b/os/morphos/icons/document.info new file mode 100644 index 0000000000000000000000000000000000000000..877ea3575f767b3f10d68d4da0a28e559253cd91 GIT binary patch literal 4451 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 literal 0 HcmV?d00001 diff --git a/os/morphos/icons/drawer.info b/os/morphos/icons/drawer.info new file mode 100755 index 0000000000000000000000000000000000000000..149ef7e101f93210509c256b4794f3c3c2fd78fc GIT binary patch literal 5390 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 literal 0 HcmV?d00001 diff --git a/stdafx.h b/stdafx.h index 15a59c7a0e..30313085be 100644 --- a/stdafx.h +++ b/stdafx.h @@ -32,6 +32,27 @@ #include #endif +#ifdef __MORPHOS__ +// morphos defines certain amiga defines per default, we undefine them +// here to make the rest of source less messy and more clear what is +// required for morphos and what for amigaos +# ifdef amigaos +# undef amigaos +# endif +# ifdef __amigaos__ +# undef __amigaos__ +# endif +# ifdef __AMIGA__ +# undef __AMIGA__ +# endif +# ifdef AMIGA +# undef AMIGA +# endif +# ifdef amiga +# undef amiga +# endif +#endif /* __MORPHOS__ */ + #define BSWAP32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) << 8) & 0xFF0000) | (((x) << 24) & 0xFF000000)) #define BSWAP16(x) ((x) >> 8 | (x) << 8) @@ -182,7 +203,7 @@ assert_compile(sizeof(uint8) == 1); #define CloseConnection OTTD_CloseConnection #endif -#if !(defined(__AMIGA__) && !defined(__MORPHOS__)) +#ifdef __AMIGA__ // it seems AmigaOS already have a Point declared #define Point OTTD_AMIGA_POINT #endif diff --git a/ttd.c b/ttd.c index b7fbbffc9a..c3647c2534 100644 --- a/ttd.c +++ b/ttd.c @@ -314,7 +314,9 @@ static void showhelp() " -G seed = Set random seed\n" " -n [ip#player:port] = Start networkgame\n" " -D = Start dedicated server\n" + #if !defined(__MORPHOS__) && !defined(__AMIGA__) " -f = Fork into the background (dedicated only)\n" + #endif " -i = Force to use the DOS palette (use this if you see a lot of pink)\n" " -p #player = Player as #player (deprecated) (network only)\n" ); @@ -526,6 +528,7 @@ int ttd_main(int argc, char* argv[]) bool network = false; char *network_conn = NULL; char *language = NULL; + char *optformat; char musicdriver[16], sounddriver[16], videodriver[16]; int resolution[2] = {0,0}; uint startdate = -1; @@ -541,7 +544,13 @@ int ttd_main(int argc, char* argv[]) // a letter means: it accepts that param (e.g.: -h) // a ':' behind it means: it need a param (e.g.: -m) // a '::' behind it means: it can optional have a param (e.g.: -d) - MyGetOptInit(&mgo, argc-1, argv+1, "m:s:v:hDfn::l:eit:d::r:g::G:p:"); + #if !defined(__MORPHOS__) && !defined(__AMIGA__) + optformat = "m:s:v:hDfn::l:eit:d::r:g::G:p:"; + #else + optformat = "m:s:v:hDn::l:eit:d::r:g::G:p:"; // no fork option + #endif + + MyGetOptInit(&mgo, argc-1, argv+1, optformat); while ((i = MyGetOpt(&mgo)) != -1) { switch(i) { case 'm': ttd_strlcpy(musicdriver, mgo.opt, sizeof(musicdriver)); break; diff --git a/unix.c b/unix.c index 6e43d28788..ca4d19c8bc 100644 --- a/unix.c +++ b/unix.c @@ -23,6 +23,11 @@ ULONG __stack = (1024*1024)*2; // maybe not that much is needed actually ;) #endif /* __MORPHOS__ */ +#ifdef __AMIGA__ +#warning add stack symbol to avoid that user needs to set stack manually (tokai) +// ULONG __stack = +#endif + static char *_fios_path; static char *_fios_save_path; static char *_fios_scn_path;