summaryrefslogtreecommitdiff
path: root/web/yacco2/o2linker/makefile_SOLARIS
blob: bfe9324679e46ca24a40e5473b829ab57edd5058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File: makefile_SOLARIS
# Why:  Creates the o2linker compaion to o2 compiler /compiler
# Library placement: 
#   Rlse:   /usr/local/yacco2/bin/o2linker
#   Dbg:    /usr/local/yacco2/bin/o2linker_debug
#   Genw:   for the pdf file: yacco2/docs
#           for the *.cpp files
#
# How to run: U must choose the label to execute: Rlse, Dbg
#   Rlse --- gen the fast version of library with no debug support
#   Dbg --- gen the debug version of library
#   Genw --- gen the pdf document and the cpp code 
#            from cweb see www.tug.org for details on obtaining code
#            for the literate programming environment aka CWEB
#            and please join Tug. It is a marvalous FOSS
#            Note: U do not need to use Genw as *.cpp and pdf 
#                  document are included in the ``yacco2'' package
# Notice: Some possible construction to be done
#  1) Adjust base_dir variable if the ``yacco2'' package is moved elsewhere. 
#     For example, if u installed the ``yacco2'' package in /opt/yacco2
#       Set the base_dir variable in this file to: base_dir = /opt/
#       The trailing / must be there or ugly things will happen.
#
#  2) Make sure u know where the ``ranlib'' utility resides on your system
#     If it's already defined in your ``bash'' ``PATH'' varable then 
#     just space out the below ``RANLIB'' variable
#     RANLIB =
#     or set it to point to its residence as what this file has done
#
# Example: gen the debug version of the library
#  cd /usr/local/yacco2/compiler/grammars
#  make Dbg -f Solaris_makefile
#

o2_eternals :=$(O2)/externals/
o2_docs := $(O2)/docs/
o2_lib = $(O2)/library/
o2_lib_grms := $(O2)/library/grammars/
o2_grms := $(O2)/compiler/grammars/
o2linker := $(O2)/o2linker/
O2_includes :=  -I'$(o2)' -I'$(o2_grms)' -I'$(o2_lib)' -I'$(o2_lib_grms)'
o2_req_libraries := -lyacco2 -lo2grammars 

files_to_cc := \
$(o2linker)o2linker_defs.cpp \
$(o2linker)common_externs.cpp \
$(o2linker)o2linker_externs.cpp \
$(o2linker)o2linker.cpp
files_to_o := $(files_to_cc:.cpp=.o) 
 
Rlse: BASICOPTS := -c -fast -m64  -lpthread
Rlse: Bld_BASICOPTS := -m64 -lpthread -xs 
Rlse: o2_lib_directories := -L $(o2_grms)lib/Release/ -L $(o2_lib)lib/Release/ 

Dbg: BASICOPTS := -c -m64 -lpthread -g 
Dbg: Bld_BASICOPTS := -m64 -lpthread -xs -g
Dbg: o2_lib_directories := -L $(o2_grms)lib/Debug/ -L $(o2_lib)lib/Debug/

Rlse: Compile Rlse_o2
Rlse := BASICOPTS = -c -fast -m64  -mt -lpthread 
Rlse := Bld_BASICOPTS = -fast -m64  -mt -lpthread
Rlse := o2_lib_directories = -L $(o2_grms)lib/Release/ -L $(o2_lib)lib/Release/ 
Rlse_o2:
	mv o2linker $(base_dir)yacco2/bin/o2linker
	rm -f *.o

Dbg: $(files_to_o) Dbg_o2
Dbg := BASICOPTS = -c -m64 -mt -lpthread -xs -g 	
Dbg := Bld_BASICOPTS = -m64 -mt -lpthread -xs -g
Dbg := o2_lib_directories = -L $(o2_grms)lib/Debug/ -L $(o2_lib)lib/Debug/
Dbg_o2:
	mv o2linker $(base_dir)yacco2/bin/o2linker_debug
	rm -f *.o

Compile: $(files_to_o)
$(o2linker)common_externs.o: $(o2)common_externs.cpp
	CC $(BASICOPTS) $(O2_includes) $(o2)common_externs.cpp -o $@  
$(o2linker)o2linker_externs.o: $(o2)o2linker_externs.cpp
	CC $(BASICOPTS) $(O2_includes)  $(o2)o2linker_externs.cpp -o $@
$(o2linker)o2linker_defs.o: $(o2)o2linker_defs.cpp
	CC $(BASICOPTS) $(O2_includes) $(o2)o2linker_defs.cpp -o $@ 
$(o2linker)o2linker.o: $(o2)o2linker.cpp
	CC $(Bld_BASICOPTS) $(O2_includes) $(o2)o2linker.cpp -o o2linker \
$(o2linker)o2linker_defs.o $(o2)common_externs.o $(o2)o2linker_externs.o \
$(o2_lib_directories) $(o2_req_libraries)
Genw:
	cweave types.w
	ctangle -l +e types.w
	pdftex types
	mv types.pdf $(o2_docs)
	cweave $(o2_eternals)common_externs.w
	ctangle -l +e $(o2_eternals)common_externs.w
	pdftex common_externs
	mv common_externs.pdf $(o2_docs)
	cweave o2linker_externs.w
	ctangle -l +e o2linker_externs.w
	pdftex o2linker_externs
	pdftops o2linker_externs.pdf
	mv o2linker_externs.pdf $(o2_docs)
	mv o2linker_externs.ps $(o2_docs)
	cweave o2linker.w
	ctangle -l +e o2linker.w
	sh Makefile_Edit_cweb
	pdftex o2linker
	pdftops o2linker.pdf
	mv o2linker.pdf $(o2_docs)
	mv o2linker.ps $(o2_docs)
	cweave o2linker_doc.w
	pdftex o2linker_doc
	pdftops o2linker_doc.pdf
	mv o2linker_doc.pdf $(o2_docs)
	mv o2linker_doc.ps $(o2_docs)
	rm types.idx
	rm types.scn
	rm types.toc
	rm types.tex
	rm types.log
	rm types.c
	rm common_externs.idx
	rm common_externs.scn
	rm common_externs.toc
	rm common_externs.tex
	rm common_externs.log
	rm common_externs.c
	rm o2linker_externs.idx
	rm o2linker_externs.scn
	rm o2linker_externs.toc
	rm o2linker_externs.tex
	rm o2linker_externs.log
	rm o2linker_externs.c
	rm o2linker.idx
	rm o2linker.scn
	rm o2linker.toc
	rm o2linker.tex
	rm o2linker.log
	rm o2linker.c
	rm o2linker_doc.idx
	rm o2linker_doc.scn
	rm o2linker_doc.toc
	rm o2linker_doc.tex
	rm o2linker_doc.log