(root)/
gcc-13.2.0/
gcc/
config/
lynx.h
       1  /* Target independent definitions for LynxOS.
       2     Copyright (C) 1993-2023 Free Software Foundation, Inc.
       3  
       4  This file is part of GCC.
       5  
       6  GCC is free software; you can redistribute it and/or modify
       7  it under the terms of the GNU General Public License as published by
       8  the Free Software Foundation; either version 3, or (at your option)
       9  any later version.
      10  
      11  GCC is distributed in the hope that it will be useful,
      12  but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14  GNU General Public License for more details.
      15  
      16  You should have received a copy of the GNU General Public License
      17  along with GCC; see the file COPYING3.  If not see
      18  <http://www.gnu.org/licenses/>.  */
      19  
      20  /* In this file we set up defaults that can be chosen by
      21     <target>/lynx.h files.  A target-specific lynx.h file can decide
      22     either to define and override these definitions or to use them by
      23     ensuring they are undefined at this point.  If we were to #undef
      24     them here we might accidentally disable some target-specific
      25     defines.  */
      26  
      27  #ifndef EXTRA_OS_LYNX_TARGET_SPECS
      28  # define EXTRA_OS_LYNX_TARGET_SPECS
      29  #endif
      30  
      31  #ifndef EXTRA_OS_LYNX_SPECS
      32  # define EXTRA_OS_LYNX_SPECS \
      33    { "cpp_os_lynx", CPP_OS_LYNX_SPEC }, \
      34    { "lib_os_lynx", LIB_OS_LYNX_SPEC }, \
      35    { "link_os_lynx", LINK_OS_LYNX_SPEC }, \
      36    { "startfile_os_lynx", STARTFILE_OS_LYNX_SPEC }, \
      37    { "endfile_os_lynx", ENDFILE_OS_LYNX_SPEC }, \
      38    EXTRA_OS_LYNX_TARGET_SPECS
      39  #endif
      40  
      41  #ifndef SUBTARGET_EXTRA_SPECS
      42  # define SUBTARGET_EXTRA_SPECS EXTRA_OS_LYNX_SPECS
      43  #endif
      44  
      45  #ifndef CPP_SPEC
      46  # define CPP_SPEC "%(cpp_cpu) %(cpp_os_lynx)"
      47  #endif
      48  
      49  #ifndef LIB_SPEC
      50  # define LIB_SPEC "%(lib_os_lynx)"
      51  #endif
      52  
      53  #ifndef LINK_SPEC
      54  # define LINK_SPEC "%(link_os_lynx)"
      55  #endif
      56  
      57  #ifndef STARTFILE_SPEC
      58  # define STARTFILE_SPEC "%(startfile_os_lynx)"
      59  #endif
      60  
      61  #ifndef ENDFILE_SPEC
      62  # define ENDFILE_SPEC "%(endfile_os_lynx)"
      63  #endif
      64  
      65  #ifndef CPP_OS_LYNX_SPEC
      66  # define CPP_OS_LYNX_SPEC \
      67  "%{mthreads: \
      68     %{mlegacy-threads: \
      69       %ecannot use mthreads and mlegacy-threads together}} \
      70   %{mthreads: -D_MULTITHREADED} \
      71   %{mlegacy-threads: -D_THREADS_POSIX4ad4} \
      72   -Asystem=lynx -Asystem=unix -D__Lynx__ -D__unix__"
      73  #endif
      74  
      75  #ifndef LIB_OS_LYNX_SPEC
      76  # define LIB_OS_LYNX_SPEC \
      77  "%{mlegacy-threads:-lposix-pre1c} -lm -lc"
      78  #endif
      79  
      80  /* We link static executables for LynxOS by default unless -mshared is
      81     used when linking an executable.  Along the same line, we link to
      82     shared libraries when linking a shared object by default unless
      83     -static is used.
      84  
      85     We have to pass in our -L options here otherwise the translated
      86     startfile directories (%D) will take priority over this.
      87     Furthermore since we have to pass in -L options here we have to
      88     make sure that -L options provided by the user take priority over
      89     everything we specify.  */
      90  
      91  #ifndef LINK_OS_LYNX_SPEC
      92  # define LINK_OS_LYNX_SPEC \
      93  "%{shared} %{static} \
      94   %{mshared: %{static: %ecannot use mshared and static together}} \
      95   %{!mshared: %{!shared: %{!static: -static}}} \
      96   %{L*} \
      97   %{mthreads: \
      98     %{mshared: -L/lib/thread/shlib -rpath /lib/thread/shlib} \
      99     %{shared: \
     100       %{!static: -L/lib/thread/shlib -rpath /lib/thread/shlib} \
     101     %{!mshared: -L/lib/thread}} \
     102     %{shared: %{static: -L/lib/thread}}} \
     103   %{!mthreads: \
     104     %{mshared: -L/lib/shlib -rpath /lib/shlib} \
     105     %{shared: -L/lib/shlib -rpath /lib/shlib}} \
     106   %{mlegacy-threads:-lposix-pre1c} -lm -lc"
     107  #endif
     108  
     109  #ifndef STARTFILE_OS_LYNX_SPEC
     110  # define STARTFILE_OS_LYNX_SPEC \
     111  "%{!shared: \
     112     %{!mthreads: \
     113       %{p:gcrt1.o%s} %{pg:gcrt1.o%s} \
     114       %{!p:%{!pg:crt1.o%s}}} \
     115     %{mthreads: \
     116       %{p:thread/gcrt1.o%s} %{pg:thread/gcrt1.o%s} \
     117       %{!p:%{!pg:thread/crt1.o%s }}}}\
     118   %{mthreads: thread/crti.o%s} %{!mthreads: crti.o%s} \
     119   %{!shared: crtbegin.o%s} \
     120   %{shared: crtbeginS.o%s}"
     121  #endif
     122  
     123  #ifndef ENDFILE_OS_LYNX_SPEC
     124  # define ENDFILE_OS_LYNX_SPEC \
     125  "%{!shared: crtend.o%s} \
     126   %{shared: crtendS.o%s} \
     127   %{mthreads: thread/crtn.o%s} %{!mthreads: crtn.o%s}"
     128  #endif
     129  
     130  /* Define the actual types of some ANSI-mandated types.  */
     131  
     132  #ifndef SIZE_TYPE
     133  # define SIZE_TYPE "unsigned int"
     134  #endif
     135  
     136  #ifndef  PTRDIFF_TYPE
     137  # define PTRDIFF_TYPE "int"
     138  #endif
     139  
     140  #ifndef  WCHAR_TYPE
     141  # define WCHAR_TYPE "long int"
     142  #endif
     143  
     144  #ifndef  WCHAR_TYPE_SIZE
     145  # define WCHAR_TYPE_SIZE BITS_PER_WORD
     146  #endif
     147  
     148  /* Define ASM_OUTPUT_ALIGN to use the .balign directive rather that
     149     the .align directive with GAS.  */
     150  
     151  #ifndef ASM_OUTPUT_ALIGN
     152  # define ASM_OUTPUT_ALIGN(FILE, LOG) 			\
     153    do							\
     154      {							\
     155        if ((LOG) != 0)					\
     156  	fprintf ((FILE), "\t.balign %d\n", 1 << (LOG));	\
     157      }							\
     158    while (0)
     159  #endif
     160  
     161  #ifndef TARGET_POSIX_IO
     162  # define TARGET_POSIX_IO
     163  #endif