1169689Skan/* Target independent definitions for LynxOS. 2169689Skan Copyright (C) 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003, 2004 3117395Skan Free Software Foundation, Inc. 418334Speter 5132718SkanThis file is part of GCC. 618334Speter 7132718SkanGCC is free software; you can redistribute it and/or modify 818334Speterit under the terms of the GNU General Public License as published by 918334Speterthe Free Software Foundation; either version 2, or (at your option) 1018334Speterany later version. 1118334Speter 12132718SkanGCC is distributed in the hope that it will be useful, 1318334Speterbut WITHOUT ANY WARRANTY; without even the implied warranty of 1418334SpeterMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1518334SpeterGNU General Public License for more details. 1618334Speter 1718334SpeterYou should have received a copy of the GNU General Public License 18132718Skanalong with GCC; see the file COPYING. If not, write to 19169689Skanthe Free Software Foundation, 51 Franklin Street, Fifth Floor, 20169689SkanBoston, MA 02110-1301, USA. */ 2118334Speter 22169689Skan/* In this file we set up defaults that can be chosen by 23169689Skan <target>/lynx.h files. A target-specific lynx.h file can decide 24169689Skan either to define and override these definitions or to use them by 25169689Skan ensuring they are undefined at this point. If we were to #undef 26169689Skan them here we might accidentally disable some target-specific 27169689Skan defines. */ 2818334Speter 29169689Skan#ifndef EXTRA_OS_LYNX_TARGET_SPECS 30169689Skan# define EXTRA_OS_LYNX_TARGET_SPECS 31169689Skan#endif 3218334Speter 33169689Skan#ifndef EXTRA_OS_LYNX_SPECS 34169689Skan# define EXTRA_OS_LYNX_SPECS \ 35169689Skan { "cpp_os_lynx", CPP_OS_LYNX_SPEC }, \ 36169689Skan { "lib_os_lynx", LIB_OS_LYNX_SPEC }, \ 37169689Skan { "link_os_lynx", LINK_OS_LYNX_SPEC }, \ 38169689Skan { "startfile_os_lynx", STARTFILE_OS_LYNX_SPEC }, \ 39169689Skan { "endfile_os_lynx", ENDFILE_OS_LYNX_SPEC }, \ 40169689Skan EXTRA_OS_LYNX_TARGET_SPECS 41169689Skan#endif 4218334Speter 43169689Skan#ifndef SUBTARGET_EXTRA_SPECS 44169689Skan# define SUBTARGET_EXTRA_SPECS EXTRA_OS_LYNX_SPECS 45169689Skan#endif 4618334Speter 47169689Skan#ifndef CPP_SPEC 48169689Skan# define CPP_SPEC "%(cpp_cpu) %(cpp_os_lynx)" 49169689Skan#endif 5018334Speter 51169689Skan#ifndef LIB_SPEC 52169689Skan# define LIB_SPEC "%(lib_os_lynx)" 53169689Skan#endif 5418334Speter 55169689Skan#ifndef LINK_SPEC 56169689Skan# define LINK_SPEC "%(link_os_lynx)" 57169689Skan#endif 5818334Speter 59169689Skan#ifndef STARTFILE_SPEC 60169689Skan# define STARTFILE_SPEC "%(startfile_os_lynx)" 61169689Skan#endif 6218334Speter 63169689Skan#ifndef ENDFILE_SPEC 64169689Skan# define ENDFILE_SPEC "%(endfile_os_lynx)" 65169689Skan#endif 6618334Speter 67169689Skan#ifndef CPP_OS_LYNX_SPEC 68169689Skan# define CPP_OS_LYNX_SPEC \ 69169689Skan"%{mthreads: \ 70169689Skan %{mlegacy-threads: \ 71169689Skan %ecannot use mthreads and mlegacy-threads together}} \ 72169689Skan %{mthreads: -D_MULTITHREADED} \ 73169689Skan %{mlegacy-threads: -D_THREADS_POSIX4ad4} \ 74169689Skan -Asystem=lynx -Asystem=unix -D__Lynx__ -D__unix__" 75169689Skan#endif 7618334Speter 77169689Skan#ifndef LIB_OS_LYNX_SPEC 78169689Skan# define LIB_OS_LYNX_SPEC \ 79169689Skan"%{mlegacy-threads:-lposix-pre1c} -lm -lc" 80169689Skan#endif 8118334Speter 82169689Skan/* We link static executables for LynxOS by default unless -mshared is 83169689Skan used when linking an executable. Along the same line, we link to 84169689Skan shared libraries when linking a shared object by default unless 85169689Skan -static is used. 8618334Speter 87169689Skan We have to pass in our -L options here otherwise the translated 88169689Skan startfile directories (%D) will take priority over this. 89169689Skan Furthermore since we have to pass in -L options here we have to 90169689Skan make sure that -L options provided by the user take priority over 91169689Skan everything we specify. */ 9218334Speter 93169689Skan#ifndef LINK_OS_LYNX_SPEC 94169689Skan# define LINK_OS_LYNX_SPEC \ 95169689Skan"%{shared} %{static} \ 96169689Skan %{mshared: %{static: %ecannot use mshared and static together}} \ 97169689Skan %{!mshared: %{!shared: %{!static: -static}}} \ 98169689Skan %{L*} \ 99169689Skan %{mthreads: \ 100169689Skan %{mshared: -L/lib/thread/shlib -rpath /lib/thread/shlib} \ 101169689Skan %{shared: \ 102169689Skan %{!static: -L/lib/thread/shlib -rpath /lib/thread/shlib} \ 103169689Skan %{!mshared: -L/lib/thread}} \ 104169689Skan %{shared: %{static: -L/lib/thread}}} \ 105169689Skan %{!mthreads: \ 106169689Skan %{mshared: -L/lib/shlib -rpath /lib/shlib} \ 107169689Skan %{shared: -L/lib/shlib -rpath /lib/shlib}} \ 108169689Skan %{mlegacy-threads:-lposix-pre1c} -lm -lc" 109169689Skan#endif 11018334Speter 111169689Skan#ifndef STARTFILE_OS_LYNX_SPEC 112169689Skan# define STARTFILE_OS_LYNX_SPEC \ 113169689Skan"%{!shared: \ 114169689Skan %{!mthreads: \ 115169689Skan %{p:gcrt1.o%s} %{pg:gcrt1.o%s} \ 116169689Skan %{!p:%{!pg:crt1.o%s}}} \ 117169689Skan %{mthreads: \ 118169689Skan %{p:thread/gcrt1.o%s} %{pg:thread/gcrt1.o%s} \ 119169689Skan %{!p:%{!pg:thread/crt1.o%s }}}}\ 120169689Skan %{mthreads: thread/crti.o%s} %{!mthreads: crti.o%s} \ 121169689Skan %{!shared: crtbegin.o%s} \ 122169689Skan %{shared: crtbeginS.o%s}" 123169689Skan#endif 12418334Speter 125169689Skan#ifndef ENDFILE_OS_LYNX_SPEC 126169689Skan# define ENDFILE_OS_LYNX_SPEC \ 127169689Skan"%{!shared: crtend.o%s} \ 128169689Skan %{shared: crtendS.o%s} \ 129169689Skan %{mthreads: thread/crtn.o%s} %{!mthreads: crtn.o%s}" 130169689Skan#endif 13118334Speter 132169689Skan/* Define the actual types of some ANSI-mandated types. */ 13318334Speter 134169689Skan#ifndef SIZE_TYPE 135169689Skan# define SIZE_TYPE "unsigned int" 136169689Skan#endif 13718334Speter 138169689Skan#ifndef PTRDIFF_TYPE 139169689Skan# define PTRDIFF_TYPE "int" 140169689Skan#endif 14118334Speter 142169689Skan#ifndef WCHAR_TYPE 143169689Skan# define WCHAR_TYPE "long int" 144169689Skan#endif 14518334Speter 146169689Skan#ifndef WCHAR_TYPE_SIZE 147169689Skan# define WCHAR_TYPE_SIZE BITS_PER_WORD 148169689Skan#endif 14918334Speter 150169689Skan/* Define ASM_OUTPUT_ALIGN to use the .balign directive rather that 151169689Skan the .align directive with GAS. */ 15218334Speter 153169689Skan#ifndef ASM_OUTPUT_ALIGN 154169689Skan# define ASM_OUTPUT_ALIGN(FILE, LOG) \ 155169689Skan do \ 156169689Skan { \ 157169689Skan if ((LOG) != 0) \ 158169689Skan fprintf ((FILE), "\t.balign %d\n", 1 << (LOG)); \ 159169689Skan } \ 160169689Skan while (0) 161169689Skan#endif 16218334Speter 163169689Skan/* Keep the *_DEBUGGING_INFO defines from elfos.h except that stabs is 164169689Skan the default on LynxOS. */ 16518334Speter 166169689Skan#ifndef PREFERRED_DEBUGGING_TYPE 167169689Skan# define PREFERRED_DEBUGGING_TYPE DBX_DEBUG 168169689Skan#endif 16918334Speter 170169689Skan/* We have C++ support in our system headers. */ 17118334Speter 172169689Skan#ifndef NO_IMPLICIT_EXTERN_C 173169689Skan# define NO_IMPLICIT_EXTERN_C 174169689Skan#endif 17518334Speter 176169689Skan#ifndef TARGET_POSIX_IO 177169689Skan# define TARGET_POSIX_IO 178169689Skan#endif 179