home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / threads / src / Makefile < prev    next >
Makefile  |  1996-09-28  |  9KB  |  264 lines

  1. #  Copyright (C) 1992, the Florida State University
  2. #  Distributed by the Florida State University under the terms of the
  3. #  GNU Library General Public License.
  4. #
  5. #This file is part of Pthreads.
  6. #
  7. #Pthreads is free software; you can redistribute it and/or
  8. #modify it under the terms of the GNU Library General Public
  9. #License as published by the Free Software Foundation (version 2).
  10. #
  11. #Pthreads is distributed "AS IS" in the hope that it will be
  12. #useful, but WITHOUT ANY WARRANTY; without even the implied
  13. #warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14. #See the GNU Library General Public License for more details.
  15. #
  16. #You should have received a copy of the GNU Library General Public
  17. #License along with Pthreads; see the file COPYING.  If not, write
  18. #to the Free Software Foundation, 675 Mass Ave, Cambridge,
  19. #MA 02139, USA.
  20. #
  21. #Report problems and direct all questions to:
  22. #
  23. #  pthreads-bugs@ada.cs.fsu.edu
  24. #
  25. #   @(#)Makefile    2.5 4/12/95
  26. #
  27.  
  28. #Compile flags:
  29. #ASM_SETJMP:        setjmp/longjmp reimplemented (with thread-specific
  30. #            signal mask) in assembly. If this flag is not set,
  31. #            the regular C library routines will be used. This
  32. #            increases the portability but violates Pthreads
  33. #            since the thread-specific signal mask may or may not
  34. #            be saved. Thus, it should only be omitted when
  35. #            absolutely necessary (for quick & dirty portability).
  36. #C_CONTEXT_SWITCH:    for context switch written in C. Notice that the
  37. #            assembly version for the SPARC is faster but by far
  38. #            less portable (see portability notes in pthread_disp.c
  39. #            and assembly file *.S).
  40. #            Internal signal handling (pthread_kill) is also much
  41. #            slower with the context switch in C, about a factor 2.
  42. #            speed(C context switch) =~ 1.2*speed(as context switch)
  43. #C_INTERFACE:        for C-language interface; if this option is omitted,
  44. #            a language-independent interface will be generated
  45. #            which has been tested for Verdix/SunAda. It seems that
  46. #            this flag should only be omitted for Verdix/SunAda.
  47. #            All other compilers follow C interface specs.
  48. #CLEANUP_HEAP:        allocate cleanup handlers on heap (default: stack).
  49. #DEBUG:            dump out trace information (mainly for signals).
  50. #DEF_RR:        supports round-robin time-sliced scheduling.
  51. #            Only works properly when MALLOC is also defined.
  52. #DRAFT5:        defines pthread_setprio() interface bypassing attributes
  53. #IO:            I/O operations only block current thread, not process.
  54. #            (SunOS 4.1.x kernel configuration must include
  55. #            light-weight processes [LWP] and aynchronous I/O [AIO];
  56. #            under Solaris 2.x, link with -laio -ldl.)
  57. #MALLOC:        thread-safe malloc, in conjuction with Gnu malloc lib.
  58. #            See README for more information.
  59. #MUT_SWITCH:        forces context switch upon successful mutex_lock()
  60. #            with regard to priorities (do not define NOERR_CHECK)
  61. #NOERR_CHECK:        fast mutex operations without error checking.
  62. #NO_INLINE:        no inlines for macros (internally CLEAR_KERNEL_FLAG).
  63. #RAND_SWITCH:        forces context switch on kernel exit at random intervals
  64. #            and to random threads without regard to priorities
  65. #            (do not define NOERR_CHECK)
  66. #REAL_TIME:        real-time scheduling support (implementation defined)
  67. #RR_SWITCH:        forces context switch on kernel exit (round-robin queue)
  68. #            without regard to priorities (do not define NOERR_CHECK)
  69. #SIGNAL_STACK:        Allows user to execute handlers in case of a stack
  70. #            overflow. STACK_CHECK has to be on for this.
  71. #SIM_KERNEL:        simulate kernel implementation by using dummy UNIX
  72. #            system call in selected routines.
  73. #SOLARIS:        support for Solaris 2.x. Need to define SVR4 as well.
  74. #            If you want to compile for Solaris, change this
  75. #            Makefile by deleting/inserting
  76. #            comments wherever the string "Solaris" occurs.
  77. #SRP:            support of mutex ceiling under stack resource
  78. #            policy (SRP)
  79. #            if not defined, _POSIX_THREADS_PRIO_PROTECT has to be
  80. #            undefined in unistd.h!
  81. #STACK_CHECK:        lock page to cause bus error / illegal instruction
  82. #            on stack overflow
  83. #STAND_ALONE:        micro-kernel for VME SPARC Engine 1E; works only in
  84. #            conjunction with SRP and no other compile options
  85. #sun4e:            Sun SPARC 1E VME board (STAND_ALONE MythOS version)
  86. #sun4m:            Force SPARC 3CE VME board (STAND_ALONE MythOS version)
  87. #SVR4:            System V Release 4 UNIX system. For portability.
  88. #            Currently supports Solaris only. If not defined,
  89. #            BSD (Berkley) UNIX is assumed (currently SunOS 4.1.x).
  90. #TIMER_DEBUG:        dump out trace information for SIGALRM signals and timer
  91.  
  92. #include directory location
  93. INCS = ../include
  94. PINC = $(INCS)/pthread
  95. INC1 = -I$(INCS)
  96. INC2 = 
  97.  
  98. #for cross-compilation
  99. #INC2 = -I/home/midasusr/include
  100. #INC2 = -I/sim/usr/include
  101.  
  102. #install directory locations
  103. INSTALL_INCLUDE = /usr/include
  104. INSTALL_LIBS = /usr/lib
  105.  
  106. #for shipping
  107. #CFLAGS = -DASM_SETJMP -DNOERR_CHECK -DSTACK_CHECK -DSIGNAL_STACK
  108. #for maximum portability (minimum assembly required)
  109. #CFLAGS = -DCLEANUP_HEAP -DC_CONTEXT_SWITCH
  110. #for thread-safe malloc and round-robin scheduling option
  111. #CFLAGS = -DASM_SETJMP -DNOERR_CHECK -DSTACK_CHECK -DSIGNAL_STACK \
  112. #    -DMALLOC -DDEF_RR
  113. #for GNARL project
  114. CFLAGS = -DASM_SETJMP -DSTACK_CHECK -DSIGNAL_STACK -DDRAFT5
  115. #for VME SPARC Engine 1E running SunOS 4.0.3e
  116. #CFLAGS = -DASM_SETJMP -DNOERR_CHECK -DSTAND_ALONE -DSTACK_CHECK \
  117.     -DSIGNAL_STACK -Dsun4e
  118. #for testing
  119. #CFLAGS = -DDEBUG -DTIMER_DEBUG -DASM_SETJMP -DSTACK_CHECK -DSIGNAL_STACK
  120.  
  121. #general flags
  122. CFLAGS += -DSRP -DC_INTERFACE
  123.  
  124. #for non-process blocking (only thread-blocking) I/O:
  125. #CFLAGS += -DIO
  126.  
  127. #for shipping
  128. CCFLAGS = -O3 $(CFLAGS)
  129. CCFLAGS1 = -O1 $(CFLAGS)
  130. CCFLAGS2 = -O2 $(CFLAGS)
  131. #for testing
  132. #CCFLAGS = -g $(CFLAGS)
  133. #CCFLAGS1 = $(CCFLAGS)
  134. #CCFLAGS2 = $(CCFLAGS)
  135.  
  136. #compile flags, always the same
  137. CCFLAGS0 = $(CCFLAGS)
  138.  
  139. #for Gnu C compiler
  140. #Notice the special compile flags CCFLAGS0 which circumvents a compile bug
  141. #of gcc 2.5.2 when compiling io.c!
  142. #CC = gcc
  143. #CCFLAGS0 = $(CFLAGS)
  144. #COMP_ASM = $(CC) $(INC1) $(INC2) $(CFLAGS) -c $*.S
  145. #for Sun C
  146. COMP_ASM = $(AS) $(INC1) $(INC2) -P $(CFLAGS) $*.S -o $*.o
  147. #for Sun C under Solaris 2.x
  148. #delete comment designator "#" in the line below if you use /usr/lang/cc
  149. #CC = /usr/lang/cc
  150.  
  151. #for Solaris 2.x
  152. #delete comment designator "#" in the lines below for Solaris 2.x/SunOS 5.x
  153. #CFLAGS += -DSOLARIS -DSVR4
  154. #Only for gcc under Solaris 2.x/SunOS 5.x, add "-traditional" in COMP_ASM.
  155. #COMP_ASM += -traditional
  156.  
  157. COMP_C   = $(CC) $(INC1) $(INC2) $(CCFLAGS) -c $*.c
  158. COMP_C0  = $(CC) $(INC1) $(INC2) $(CCFLAGS0) -c $*.c
  159. COMP_C1  = $(CC) $(INC1) $(INC2) $(CCFLAGS1) -c $*.c
  160. COMP_C2  = $(CC) $(INC1) $(INC2) $(CCFLAGS2) -c $*.c
  161.  
  162. AR     = ar
  163. RANLIB = /usr/bin/ranlib
  164.  
  165. LINTFLAGS = -u $(CFLAGS)
  166.  
  167. LIBS = ../lib/libgthreads.a
  168.  
  169. CSRC = pthread.c stack.c mutex.c pthread_init.c signal.c \
  170.     cond.c queue.c io.c pthread_disp.c
  171.  
  172. SCRS = $(CSRC) pthread_sched.S pthread_aux.S pthread_opt.S
  173.  
  174. OBJS = pthread.o stack.o mutex.o cond.o pthread_init.o \
  175.     signal.o pthread_sched.o pthread_aux.o pthread_opt.o \
  176.     queue.o io.o pthread_disp.o
  177.  
  178. HDR0 = $(PINC)/config.h $(INCS)/../src/config_internals.h
  179.  
  180.  
  181. HDR1 = pthread_internals.h $(INCS)/pthread.h $(PINC)/unistd.h $(PINC)/limits.h \
  182.     $(PINC)/errno.h $(PINC)/signal.h $(PINC)/pthread_asm.h \
  183.     $(HDR0)
  184.  
  185. DEP1 = $(HDR1) Makefile
  186.  
  187. HDRS = $(HDR1) pthread_offsets.h mutex.h signal_internals.h
  188.  
  189. all: $(LIBS)
  190.  
  191. $(LIBS):: $(OBJS)
  192.     $(AR) ru $(LIBS) $(OBJS) ; \
  193.     if (test -x $(RANLIB)) ; \
  194.         then \
  195.           $(RANLIB) $(LIBS) ; \
  196.         fi
  197.  
  198. cond.o: $(DEP1) mutex.h
  199.     $(COMP_C)
  200.  
  201. mutex.o: $(DEP1) mutex.h
  202.     $(COMP_C)
  203.  
  204. pthread.o: $(DEP1)
  205.     $(COMP_C)
  206.  
  207. pthread_init.o: $(DEP1) pthread_setjmp.h
  208.     $(COMP_C)
  209.  
  210. signal.o: $(DEP1) mutex.h signal_internals.h pthread_offsets.h pthread_setjmp.h
  211.     $(COMP_C)
  212.  
  213. stack.o: $(DEP1)
  214.     $(COMP_C)
  215.  
  216. queue.o: $(DEP1)
  217.     $(COMP_C)
  218.  
  219. io.o: $(DEP1)
  220.     $(COMP_C0)
  221.  
  222. pthread_disp.o: $(DEP1) pthread_setjmp.h
  223.     $(COMP_C1)
  224.  
  225. pthread_sched.o: pthread_sched.S $(PINC)/pthread_asm.h \
  226.         pthread_offsets.h signal_internals.h $(HDR0) Makefile
  227.     $(COMP_ASM)
  228.  
  229. pthread_aux.o: pthread_aux.S $(PINC)/pthread_asm.h \
  230.         pthread_offsets.h $(HDR0) Makefile
  231.     $(COMP_ASM)
  232.  
  233. pthread_opt.o: pthread_opt.S $(PINC)/pthread_asm.h \
  234.         pthread_offsets.h $(HDR0) Makefile
  235.     $(COMP_ASM)
  236.  
  237. pthread_offsets.h: get_offsets
  238.     ./get_offsets > pthread_offsets.h
  239.  
  240. get_offsets: get_offsets.c $(DEP1) pthread_setjmp.h
  241.     $(CC) $(INC1) $(INC2) $(CCFLAGS) -o $@ $@.c
  242.  
  243. $(PINC)/config.h: config_header Makefile
  244.     ./config_header $(CCFLAGS) > $@
  245.  
  246. $(INCS)/../src/config_internals.h: config_header Makefile
  247.     ./config_header -l $(CCFLAGS) > $@
  248.  
  249. config_header: config_header.c Makefile
  250.     $(CC) $(CCFLAGS) -o $@ $@.c
  251.  
  252. install:
  253.     cp -R $(INCS) $(INSTALL_INCLUDE)
  254.     cp $(LIBS) $(INSTALL_LIBS)
  255.  
  256. lint:
  257.     lint $(LINTFLAGS) $(CSRC)
  258.  
  259. llib:
  260.     lint $(LINTFLAGS) -Cthreads $(SRCS)
  261.  
  262. clean:
  263.     -rm -f $(LIBS) a.out core errs *.o *.BAK *.CKP *~ #*
  264.