=6|:32V6v432+O/.'&%$Hi'~%|#z@a}v{ts9wvutmrk1ongfkjc)gf_GcbaZ~}|?>ZYXWPOsSR4o\
2 |
--------------------------------------------------------------------------------
/vcalendar/OwO.ics:
--------------------------------------------------------------------------------
1 | BEGIN:VCALENDAR
2 | VERSION:2.0
3 | PRODID:-//hacksw/handcal//NONSGML v1.0//EN
4 | BEGIN:VEVENT
5 | UID:vcalendar_hacktoberfest_2019_OwO
6 | DTSTAMP:20191019T213000Z
7 | ORGANIZER;CN=doczkal
8 | RRULE:FREQ=YEARLY
9 | DTSTART;VALUE=DATE:20191001
10 | DTEND;VALUE=DATE:20191101
11 | SUMMARY:OwO.ics
12 | DESCRIPTION:OwO.ics
13 | X-ALT-DESC;FMTTYPE=text/html:
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 | *Notices Bulge*
25 |
26 |
27 | __ ___ _ _ _ _ _
28 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___
29 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|
30 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \
31 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/
32 |
33 |
34 |
35 | END:VEVENT
36 | END:VCALENDAR
37 |
--------------------------------------------------------------------------------
/Whitespaces/whitespaces.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ASCII/ASCII:
--------------------------------------------------------------------------------
1 | 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00101010 01001110 01101111 01110100 01101001 01100011 01100101 01110011 00100000 01000010 01110101 01101100 01100111 01100101 00101010 00001010 01011111 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 01011111 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 00100000 01011111 00001010 01011100 00100000 01011100 00100000 00100000 00100000 00100000 00100000 00100000 00101111 00100000 00101111 00100000 01111100 01011111 01011111 00100000 00100000 00100000 01011111 01011111 00100000 01011111 01111100 00100000 01111100 01011111 00100000 00101000 00100000 00101001 00100000 01011111 01011111 01011111 00100000 00100000 01111100 00100000 01111100 01011111 01111100 00100000 01111100 01011111 01011111 00100000 00101000 01011111 00101001 00100000 01011111 01011111 01011111 00001010 00100000 01011100 00100000 01011100 00100000 00101111 01011100 00100000 00101111 00100000 00101111 01111100 00100000 00100111 01011111 00100000 01011100 00100000 00101111 00100000 01011111 01011100 01100000 01111100 00100000 01011111 01011111 01111100 00101111 00101111 00100000 00101111 00100000 01011111 01011111 01111100 00100000 01111100 00100000 01011111 01011111 01111100 00100000 00100111 01011111 00100000 01011100 01111100 00100000 01111100 00101111 00100000 01011111 01011111 01111100 00001010 00100000 00100000 01011100 00100000 01010110 00100000 00100000 01010110 00100000 00101111 00100000 01111100 00100000 01111100 00100000 01111100 00100000 01111100 00100000 00101000 01011111 01111100 00100000 01111100 00100000 01111100 01011111 00100000 00100000 00100000 00100000 01011100 01011111 01011111 00100000 01011100 00100000 01111100 00100000 01111100 01011111 01111100 00100000 01111100 00100000 01111100 00100000 01111100 00100000 01111100 01011100 01011111 01011111 00100000 01011100 00001010 00100000 00100000 00100000 01011100 01011111 00101111 01011100 01011111 00101111 00100000 00100000 01111100 01011111 01111100 00100000 01111100 01011111 01111100 01011100 01011111 01011111 00101100 01011111 01111100 01011100 01011111 01011111 01111100 00100000 00100000 00100000 01111100 01011111 01011111 01011111 00101111 00100000 01011100 01011111 01011111 01011111 01111100 01011111 01111100 00100000 01111100 01011111 01111100 01011111 01111100 00101111 01011111 01011111 01011111 00101111
--------------------------------------------------------------------------------
/BF/OwO.bf:
--------------------------------------------------------------------------------
1 | # Generated using https://copy(dot)sh/brainfuck/text(dot)html #
2 | # You can run it using https://copy(dot)sh/brainfuck/ or another BF interpreter #
3 | # (replace (dot) with periods) #
4 | ++++[->++++++++<]>.................++++++++++.---[->++<]>.-[--->+<]>.+++++.-----------.------.++.[--->+<]>----.+[---->+<]>+++.+[->++<]>.++[----->+<]>+.---------.-----.--.--[->+++<]>+.>++++++++++.[--->++<]>+++..+[->+++<]>........[->+++<]>-...+[->+++<]>...........[->+++<]>-.+[->+++<]>....[->+++<]>-.+[->+++<]>........[->+++<]>-.+[->+++<]>...[->+++<]>-.+[->+++<]>.....[->+++<]>-.+[->+++<]>......>++++++++++.[--->++<]>.+[--->+<]>+.-[->+++<]>-.+[--->+<]>+......[-->+++<]>-.+[--->++<]>.[-->+++<]>-.+[--->++<]>.-[->++++<]>.[---->+++<]>++..+[->+++<]>...[->+++<]>-..+[->+++<]>.[->+++<]>-.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.+[->+++<]>.++++++++.--------.+++++++++.---------.[->+++<]>-...+[->+++<]>..-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++..+[->+++<]>.++++++++.[++++>---<]>+.++++[->+++<]>.---------.[->+++<]>-...+[->+++<]>.>++++++++++.[->+++<]>++.-[->+++<]>-.+[--->+<]>+.-[->+++<]>-.+[--->+<]>+.[-->+++<]>-.-[->++<]>.+[--->+<]>+.[-->+++<]>-.+[--->++<]>.[-->+++<]>-.>--[-->+++<]>-.[---->+<]>+.+++++++.-[-->+++++<]>.+[->+++<]>.-[->+++<]>-.+[--->+<]>+.[-->+++<]>-.+[--->++<]>.[->+++<]>-.---.++++.-[->++++<]>.[---->+<]>+.[->+++<]>-..[->++++<]>.[----->++++<]>-..+[--->++<]>.[-->+++<]>-.+[--->++<]>.[->+++<]>-..[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.[->+++<]>-..[->++++<]>.[---->+<]>+.+++++++.-[-->+++++<]>.+[->+++<]>.-[->+++<]>-.+[--->++++<]>.[---->+<]>+.-[->++++<]>.[----->++++<]>-.+[--->++<]>.[->+++<]>-..[->++++<]>.>++++++++++.[->+++<]>++..-[->+++<]>-.+[--->+<]>+.>+[--->++<]>.+[--->+<]>+++..>+[--->++<]>.+[--->+<]>+++.[-->+++<]>-.+[--->++<]>.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.++++++++.[++++>---<]>+.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.+[->+++<]>....-[->+++<]>-.+++..+[->+++<]>.-[->+++<]>-.+[--->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>-.+++..+[->+++<]>.-[->+++<]>-.[++>---<]>.[->+++<]>++...-[->+++<]>-.+++.-[-->+<]>.-[->++<]>.+++.-[-->+<]>.+[--->++<]>..-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+++<]>-.+++..-[-->+<]>---.+++[->++<]>+.[->++++<]>.[---->+++<]>-.+++..[->++++<]>.[---->+<]>+...-[->++++<]>.[---->+++<]>++...-[-->+<]>.+[--->++<]>.-[->+++<]>-.+++...[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+++<]>++.[->++++<]>.[----->++++<]>-.[->++<]>+...-[-->+<]>.>++++++++++.
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from
5 | https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 | [Ll]og/
25 |
26 | # Visual Studio 2015/2017 cache/options directory
27 | .vs/
28 | # Uncomment if you have tasks that create the project's static files in
29 | wwwroot
30 | #wwwroot/
31 |
32 | # MSTest test Results
33 | [Tt]est[Rr]esult*/
34 | [Bb]uild[Ll]og.*
35 |
36 | # NUNIT
37 | *.VisualState.xml
38 | TestResult.xml
39 |
40 | # Build Results of an ATL Project
41 | [Dd]ebugPS/
42 | [Rr]eleasePS/
43 | dlldata.c
44 |
45 | # Benchmark Results
46 | BenchmarkDotNet.Artifacts/
47 |
48 | # .NET Core
49 | project.lock.json
50 | project.fragment.lock.json
51 | artifacts/
52 | **/Properties/launchSettings.json
53 |
54 | *_i.c
55 | *_p.c
56 | *_i.h
57 | *.ilk
58 | *.meta
59 | *.obj
60 | *.pch
61 | *.pdb
62 | *.pgc
63 | *.pgd
64 | *.rsp
65 | *.sbr
66 | *.tlb
67 | *.tli
68 | *.tlh
69 | *.tmp
70 | *.tmp_proj
71 | *.log
72 | *.vspscc
73 | *.vssscc
74 | .builds
75 | *.pidb
76 | *.svclog
77 | *.scc
78 |
79 | # Chutzpah Test files
80 | _Chutzpah*
81 |
82 | # Visual C++ cache files
83 | ipch/
84 | *.aps
85 | *.ncb
86 | *.opendb
87 | *.opensdf
88 | *.sdf
89 | *.cachefile
90 | *.VC.db
91 | *.VC.VC.opendb
92 |
93 | # Visual Studio profiler
94 | *.psess
95 | *.vsp
96 | *.vspx
97 | *.sap
98 |
99 | # Visual Studio Trace Files
100 | *.e2e
101 |
102 | # TFS 2012 Local Workspace
103 | $tf/
104 |
105 | # Guidance Automation Toolkit
106 | *.gpState
107 |
108 | # ReSharper is a .NET coding add-in
109 | _ReSharper*/
110 | *.[Rr]e[Ss]harper
111 | *.DotSettings.user
112 |
113 | # JustCode is a .NET coding add-in
114 | .JustCode
115 |
116 | # TeamCity is a build add-in
117 | _TeamCity*
118 |
119 | # DotCover is a Code Coverage Tool
120 | *.dotCover
121 |
122 | # AxoCover is a Code Coverage Tool
123 | .axoCover/*
124 | !.axoCover/settings.json
125 |
126 | # Visual Studio code coverage results
127 | *.coverage
128 | *.coveragexml
129 |
130 | # NCrunch
131 | _NCrunch_*
132 | .*crunch*.local.xml
133 | nCrunchTemp_*
134 |
135 | # MightyMoose
136 | *.mm.*
137 | AutoTest.Net/
138 |
139 | # Web workbench (sass)
140 | .sass-cache/
141 |
142 | # Installshield output folder
143 | [Ee]xpress/
144 |
145 | # DocProject is a documentation generator add-in
146 | DocProject/buildhelp/
147 | DocProject/Help/*.HxT
148 | DocProject/Help/*.HxC
149 | DocProject/Help/*.hhc
150 | DocProject/Help/*.hhk
151 | DocProject/Help/*.hhp
152 | DocProject/Help/Html2
153 | DocProject/Help/html
154 |
155 | # Click-Once directory
156 | publish/
157 |
158 | # Publish Web Output
159 | *.[Pp]ublish.xml
160 | *.azurePubxml
161 | # Note: Comment the next line if you want to checkin your web deploy
162 | settings,
163 | # but database connection strings (with potential passwords) will be
164 | unencrypted
165 | *.pubxml
166 | *.publishproj
167 |
168 | # Microsoft Azure Web App publish settings. Comment the next line if you
169 | want to
170 | # checkin your Azure Web App publish settings, but sensitive information
171 | contained
172 | # in these scripts will be unencrypted
173 | PublishScripts/
174 |
175 | # NuGet Packages
176 | *.nupkg
177 | # The packages folder can be ignored because of Package Restore
178 | **/[Pp]ackages/*
179 | # except build/, which is used as an MSBuild target.
180 | !**/[Pp]ackages/build/
181 | # Uncomment if necessary however generally it will be regenerated when
182 | needed
183 | #!**/[Pp]ackages/repositories.config
184 | # NuGet v3's project.json files produces more ignorable files
185 | *.nuget.props
186 | *.nuget.targets
187 |
188 | # Microsoft Azure Build Output
189 | csx/
190 | *.build.csdef
191 |
192 | # Microsoft Azure Emulator
193 | ecf/
194 | rcf/
195 |
196 | # Windows Store app package directories and files
197 | AppPackages/
198 | BundleArtifacts/
199 | Package.StoreAssociation.xml
200 | _pkginfo.txt
201 | *.appx
202 |
203 | # Visual Studio cache files
204 | # files ending in .cache can be ignored
205 | *.[Cc]ache
206 | # but keep track of directories ending in .cache
207 | !*.[Cc]ache/
208 |
209 | # Others
210 | ClientBin/
211 | ~$*
212 | *~
213 | *.dbmdl
214 | *.dbproj.schemaview
215 | *.jfm
216 | *.pfx
217 | *.publishsettings
218 | orleans.codegen.cs
219 |
220 | # Since there are multiple workflows, uncomment next line to ignore
221 | bower_components
222 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
223 | #bower_components/
224 |
225 | # RIA/Silverlight projects
226 | Generated_Code/
227 |
228 | # Backup & report files from converting an old project file
229 | # to a newer Visual Studio version. Backup files are not needed,
230 | # because we have git ;-)
231 | _UpgradeReport_Files/
232 | Backup*/
233 | UpgradeLog*.XML
234 | UpgradeLog*.htm
235 |
236 | # SQL Server files
237 | *.mdf
238 | *.ldf
239 | *.ndf
240 |
241 | # Business Intelligence projects
242 | *.rdl.data
243 | *.bim.layout
244 | *.bim_*.settings
245 |
246 | # Microsoft Fakes
247 | FakesAssemblies/
248 |
249 | # GhostDoc plugin setting file
250 | *.GhostDoc.xml
251 |
252 | # Node.js Tools for Visual Studio
253 | .ntvs_analysis.dat
254 | node_modules/
255 |
256 | # TypeScript v1 declaration files
257 | typings/
258 |
259 | # Visual Studio 6 build log
260 | *.plg
261 |
262 | # Visual Studio 6 workspace options file
263 | *.opt
264 |
265 | # Visual Studio 6 auto-generated workspace file (contains which files
266 | were open etc.)
267 | *.vbw
268 |
269 | # Visual Studio LightSwitch build output
270 | **/*.HTMLClient/GeneratedArtifacts
271 | **/*.DesktopClient/GeneratedArtifacts
272 | **/*.DesktopClient/ModelManifest.xml
273 | **/*.Server/GeneratedArtifacts
274 | **/*.Server/ModelManifest.xml
275 | _Pvt_Extensions
276 |
277 | # Paket dependency manager
278 | .paket/paket.exe
279 | paket-files/
280 |
281 | # FAKE - F# Make
282 | .fake/
283 |
284 | # JetBrains Rider
285 | .idea/
286 | *.sln.iml
287 |
288 | # CodeRush
289 | .cr/
290 |
291 | # Python Tools for Visual Studio (PTVS)
292 | __pycache__/
293 | *.pyc
294 |
295 | # Cake - Uncomment if you are using it
296 | # tools/**
297 | # !tools/packages.config
298 |
299 | # Tabs Studio
300 | *.tss
301 |
302 | # Telerik's JustMock configuration file
303 | *.jmconfig
304 |
305 | # BizTalk build output
306 | *.btp.cs
307 | *.btm.cs
308 | *.odx.cs
309 | *.xsd.cs
310 |
311 | # OpenCover UI analysis results
312 | OpenCover/
313 |
314 | #Executables
315 | *.exe
316 | *.class
317 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OwO
2 |
3 |  [](https://github.com/Krutonium/OwO/blob/master/LICENSE)
4 |
5 | ## _Notices Bulge_
6 |
7 | ### What's This?
8 |
9 | ```
10 | krutonium@Arch ~ OwO
11 | *Notices Bulge*
12 | __ ___ _ _ _ _ _
13 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___
14 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|
15 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \
16 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/
17 | ```
18 |
19 | ---
20 |
21 | ### How To Run
22 | =======
23 |
24 | **05AB1E**
25 | [Use the online interpreter](https://tio.run/#05ab1e)
26 |
27 |
28 |
29 | **Ada**
30 | `gnatmake OwO.adb && ./OwO`
31 |
32 |
33 |
34 | **Axe Parser**
35 | `Asm(prgmOWO)` (Send OWO.8XP to your calculator first)
36 |
37 |
38 |
39 | **BASIC**
40 | `fbc OwO.bas`
41 |
42 |
43 |
44 | **Bash**
45 | `chmod +x OwO.sh && ./OwO.sh`
46 |
47 |
48 |
49 | **Batch**
50 | `CALL OwO.bat` or just run the program
51 |
52 |
53 |
54 | **Boo**
55 | `booi OwO.boo`
56 |
57 |
58 |
59 | **Brainfuck**
60 |
61 | npm install --g node-brainfuck-compiler
62 | brainfuck-compiler -i BF/OwO.bf -o BF/OwO-compiled.js && node Brainfuck/OwO-compiled.js
63 | Alternatively, [Try it online!](https://tio.run/##vVTJboMwEL33K0bKJRGyuVcVhx7ab6iiHghxC2oKyBi1/XqKF8yw2ICS1kLInuX5zeI58TjL3@rko2l28MxyxmPBzlBXWf4OqRBldR@GSVH@7M@FOFRpeOocQsG@hZKm4vMCu7sdvBQ1JHEOvM4hE6tAoOAQ54VIGYfHJ8hywXjJWftXiHvOykucMFCe8JWJFErGs@JcHVqDoF1HEgVmPbxGdLwCuyghRBlLs3ZH2r3cWmW3zL5VUGulBfKoz9IlsGiB1hgVHSFR9WmeSh8hUvqGDtJg4kisgNA59dBiqHcqfEq3kwduPiKdsC4pQ3crN9ATpQJwyQ1YZ2OtJinE2UMKJJ4iYbpzNyAc3Ftd04xFxF1Csv3y7R6zfI/yL7taeffvSCV3kfiw3P1Vrhq75Li8/dt0WbgaI5KPCxe0d7e1MAb2AhvrCmbDe3vCptrOKuLsjU3sUfflYsP7sNwtsEjjijStYYCiXBGMq6ucRYqC@VkjfTy6DUPFm9itcsfjux59ZjDRUdZGc2Dhof7NQLqVfEVMR5vfYSdNkqI7vnc3QxLJcYfcdjD7I7MMzJzp6C35OXh4uVNHvJMWov8Q/4wGzZE@DZg0Hh1N8ws "brainfuck – Try It Online")
64 |
65 |
66 |
67 | **C**
68 | `gcc OwO.c -o OwO && ./OwO`
69 |
70 |
71 |
72 | **C++**
73 | `g++ OwO.cpp -o OwO && ./OwO`
74 |
75 |
76 |
77 | **C#/.NET**
78 | `dotnet restore && dotnet run`
79 |
80 |
81 |
82 | **CoffeeScript**
83 | `coffee OwO.coffee`
84 |
85 |
86 |
87 | **Crystal**
88 | `crystal OwO.cr`
89 |
90 |
91 |
92 | **D**
93 | `dmd OwO.d && ./OwO`
94 |
95 |
96 |
97 | **Dart**
98 | `dart OwO.dart`
99 |
100 |
101 |
102 | **Docker**
103 | `docker build . -t owo && docker run owo`
104 |
105 |
106 |
107 | **Elisp**
108 | `emacs -q --script OwO.el`
109 |
110 |
111 |
112 | **Elixir**
113 | `elixir Elixir.exs`
114 |
115 |
116 |
117 | **Emojicode**
118 | `emojicodec OwO.emojic && ./OwO`
119 |
120 |
121 |
122 | **Erlang**
123 |
124 | $erl
125 |
126 | 1> c(owo).
127 |
128 | 2> owo:owoPrint().
129 |
130 |
131 |
132 | **Factor**
133 | [Download and compile the Java Factor interpreter](https://github.com/bangyen/factor-lang)
134 | `java Factor OwO.fact`
135 |
136 |
137 |
138 | **Fetlang**
139 | `fetlang OwO.fet`
140 |
141 |
142 |
143 | **Fish**
144 | `chmod +x OwO.fish && ./OwO.fish`
145 |
146 |
147 |
148 | **Forth**
149 | `gforth owo.fs -e bye`
150 |
151 |
152 |
153 | **Go**
154 | `go run OwO.go`
155 |
156 |
157 |
158 | **Haskell**
159 | `runghc OwO.hs`
160 |
161 |
162 |
163 | **HTML**
164 | `firefox OwO.html`
165 |
166 |
167 |
168 | **Java**
169 | `java OwO.java`
170 |
171 |
172 |
173 | **JavaScript (NodeJS) and JSFuck**
174 | `node OwO.js`
175 |
176 |
177 |
178 | **JScript**
179 | `cscript OwO.js`
180 |
181 |
182 |
183 | **Julia**
184 | `julia OwO.jl`
185 |
186 |
187 |
188 | **Kotlin**
189 | `kotlinc OwO.kt -include-runtime -d OwO.jar && java -jar OwO.jar`
190 |
191 |
192 |
193 | **LaTeX**
194 | `pdflatex OwO.tex` or `latex OwO.tex` or `xelatex OwO.tex`
195 |
196 |
197 |
198 | **Lisp**
199 | `clisp OwO.lisp`
200 |
201 |
202 |
203 | **LOLCODE**
204 | `lci OwO.lol`
205 |
206 |
207 |
208 | **Lua**
209 | `lua OwO.lua`
210 |
211 |
212 |
213 | **Makefile**
214 | `make`
215 |
216 |
217 |
218 | **Malbolge**
219 | `malbolge OwO.mal`
220 |
221 |
222 |
223 | **Nim**
224 | `nim compile --run OwO.nim` or `nimble run`
225 |
226 |
227 |
228 | **OCaml**
229 | `ocaml OwO.ml`
230 |
231 |
232 |
233 | **Perl**
234 | `perl OwO.pl`
235 |
236 |
237 |
238 | **PHP**
239 | `php OwO.php`
240 |
241 |
242 |
243 | **Pascal**
244 | `fpc OwO.pas`
245 |
246 |
247 |
248 | **PowerShell**
249 | `powershell OwO.ps1`
250 |
251 |
252 |
253 | **Python (v2.x and v3.x respectively)**
254 | `python owo.py` or `python3 owo.py`
255 |
256 |
257 |
258 | **R**
259 |
260 | `Rscript OwO.R` Linux/Unix
261 |
262 | `R.exe OwO.R` Windows
263 |
264 |
265 |
266 |
267 | **Red**
268 | `red -c OwO.red` and then run the compiled executable from a command prompt/terminal.
269 |
270 |
271 |
272 | **Ruby**
273 | `ruby OwO.rb`
274 |
275 |
276 |
277 | **Rust**
278 | `cargo run`
279 |
280 |
281 |
282 | **Slashes**
283 | Find an interpreter on [here](https://codegolf.stackexchange.com/questions/37014/interpret-pronounced-slashes) and run it
284 |
285 |
286 |
287 | **Swift**
288 | `swift OwO.swift`
289 |
290 |
291 |
292 | **TCL**
293 | `tclsh OwO.tcl`
294 |
295 |
296 |
297 | **TypeScript**
298 | `tsc OwO.ts | node OwO.ts`
299 |
300 |
301 |
302 | **V**
303 | `v run OwO.v`
304 |
305 |
306 |
307 | **Vala**
308 | `valac OwO.vala && ./OwO`
309 |
310 |
311 |
312 | **VBScript**
313 | `cscript OwO.vbs`
314 |
315 |
316 |
317 | **VisualBasic**
318 | `vbc ./OwO.vb && ./OwO`
319 |
320 |
321 |
322 | **Wenyan**
323 | `wenyan ./OwO.wy`
324 |
325 | `create an image that resembles pages from historical printed books`
326 |
327 | `wenyan --render ./OwO.wy`
328 |
329 |
330 |
331 |
332 | **WhiteSpaces**
333 | `Replace space with 1 and tab with 0`
334 |
335 | `Then decode binary`
336 |
337 |
338 |
339 | **Terraform**
340 | `terraform init && terraform apply`
341 |
342 |
343 |
344 | **Zsh**
345 | `chmod +x OwO.zsh && ./OwO.zsh`
346 |
347 |
348 |
349 | ### What's This?
350 |
351 | ```
352 | krutonium@Arch ~ OwO
353 | *Notices Bulge*
354 | __ ___ _ _ _ _ _
355 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___
356 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|
357 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \
358 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/
359 | ```
360 |
361 | ---
362 |
--------------------------------------------------------------------------------
/Factor/OwO.fact:
--------------------------------------------------------------------------------
1 | 68612473420886018882788544838911944114917353486445642410584881371120011148098343270665679383675894274336558059982072186983568283049296958312047158787981960124186764097233470375002779359638043075904900149542155314429741416632123483276641339340270806790214585491633849132672184709967761641785918384892154000200746610192011121581513788814752062988411341813127096335401017099570970691230903039864863948935899970933683823319745303324472708197216095729547040229410233266600360858033994898634948766298079055105441269702945108836416366842827049339312485364245788425718629090380494239918262169417303280533323980919228015583509798710256828688985784495710144424450466816814558761554337515088474006733656140065126710484879507200915184100492328752807866391935555721542595718797775707753714776758858314487314951754456062131783069719048747159129687248554037921964948041755583631586872944868712779762506305648007639498192704338294490763961360265926531502444701823048180677016389422966875686627391684067105739373399630540475714070313569661558987463040538543855404744087886719348840735137670663843433833977162690297164413649593646019766913122262922094698568925098081187911185028123577036546710115251294097641251475041688080556180201787347828638581717465467538063804375187914907160819842858199836471607172171372777768289489727114753903026652811637413821259071947240645205512697391677354191687820838902969423842208777763691563115089471911010579940987989378683067600142431770707686808682047793835782644177669553120339365246314022207659504164888804788008733234885713959871935521353786329509329838149902726253379545381818718675302343432985990736372549113136291905957494221312838473725760534048972803290918378462939347687636799623677233104603270605499485043870808395286723656960490033210829589905403344120299052779072536820492170650525212692477193593700310454214558727051382908186155939591346632321196257517845423275575975563560599918007410206077760168245502593386476119553362375422608094283499438579795733642040910950489246711827928470353386159536347219166778350576147325650773315983513194082576384286285609324995771688991553664673687797926579510665835003850148369482039140772431571560716917345553319819724833291849735130019403590569383757039199332353329203176926159304204496182657772876931651213128967309598366884313177696854570381669754392821724764390507350034663082253309944274531093891204349239117209802973924574895962467595609136127587106892666956037701196815125358690592515618518262672959657982365761697316149318604058815811051242519998499345779925607556655152831767844976984648264333075117545740194798332269558953710069187076884060735754142138418846708368987450897398462835372243300721206407163599563778365588586542580695268610556697523533025962875988924204255175221340041159692526395658072014367307690437258247482950145071044063014645064259629486064080854578005116160820696533790909628356047989782558664034804769502336564009516448961128944581118093766407797131673534615850303394917796144698922258047961163200462004793521884382937392452654409997821778080354539146430494369881791840404780978337911502236238447249798660627238087324719190352603978000492280883102135274026878624155202625254303093264689462285740490802439932190512716779490172966926444310922103588310197977110639183284764197881931848769532695824780746719783571406956294213532231002718990443121829327885726688744497525835521667722315176150682606226739337493667953449202939825863783135095965924652419720519723064921157475138697310410238546593310739196093221280617201982121550377603671764119976575285794718654239060918719690433115876354569559396813239820354167453230424644684419771109361477644782270334506825552926797542878354738900336843934510118851854083532809938384707064413022239030665658208075261428640088955749001055355237473816402153548710011091780144064414890625638293704109732194615465553106536068583218310470504116751110444920211348480288465996003764646320266213678994432117963530705892320624195366603809850352370345670365484557305450615606133576765980330997474857887473434789232981774679117074500399629688024108145245376726651467933021812520009957424519744677797029423107494611921286475755434316816860218518454119307942513143658530956487405570187525279869344143619496444907053548695628312860873837971984869110149744566640572018175783026578075594302166439689734366579844243226432716092541617251647914433520429139673654772908813696160719136235661623700487055064939194567301064969969063443481993777480683737979434245650167078354083294218011062062035927152073621852767556296593931782746668014528707942332951014256878291310975458181005014691407878261652580532841580133197725996771638602821994080213408679521379791436442580023139776538137633914447687802917519530483553711008135660299534074127833555519289154675416206907419587510884563857041599058590523315036723213900431835705444984249441322212363048967613205778414345106880286609301062823490022748210994304206045381788858719019596447576524603853955248180502271376900162630787822665008545072357951270826547393771389286985790715365189601703466216377017999299405638448064011845059207782746818037105175002034842056588942024047136399375471242040420199777357424679592518460350533412592157059034280412324380527951690415600574032718443770640844340007882836221576902853705807640764301476223106174438572577747289878464169212176880403459603153367445190627675432214281525991433378727636889777021174357548916946160332999532279067213959178176536116084429970803197722505100480281066142927277371608611814509166313765428561984764359015244895470473925858593376510397113532628775303908472391021400028823469840450969786341721554633993070868665682414395274584654207370227892434628400336829571708463487528404696598799706829093567193108424104830531683233648112362390612206372922191384591687725952569975883660357154534960445894412622331223326011436631040326503167126260597908459569429682610577320422344610992150168999806580272255494929964660076018852887618420784695963464332802643213709801662094342466477284865812708062986777144646734624365247626781394719660945167019309432213963805473388050323450480691740910263698903704147291192964317600335509490331999511195653534691850637548505494817562339135888476724923988843033229676702994986434007519408552961545843460360508732711287515980336906188991353195875060695915340500529317211170725870941860444622046276563972440003091234330861802722684575648020159449522419152033250309271993976763597339572904486109972092532902931909474034368055662300259582313300745393128243176901708460539158982013313861203664492714841220287702206098107352989510805735498869570935015117302827072725508095709234625833100855357787886369909254305623264639168258403431894584796672035666587872206796596741333357843064296689937036585624054152864166490667647805786687558500518496305574579428116053425388859603539127328639896102354288626635153233245303599156644825630459751509919604667364092004602801246420187066592855622593192487937701914525128917682601437709644426333090945058298833896719064912091237030304398412196296622635415384694884300291517816746611258128958120238049661706980690185123609189288092652519931360566320274993534953141253680740624247701287056957316553197920603169616308013623860329806841925912697632122951745464520755102985259218023995029383555894310219607575997584278846366980568629200057860299787642907422278252460496984690068057384580405400959896939413574502781033167169135628118976631666266552691564731355329189724257333160598917664481786456763900614961221940246954252133440830431223053871746623238409094324138717357467848240487047406810680410474716110054256873252895709250921960841151412309084525402905717624271733537124789918949535080170027750147644839264078907477634500374097673452666660232086302178464617656334763034001417920272125388896364898407432476124911831129177859068898688246870566363372292229761933908707599452502876740749490050550719313068980617773547592216977550855072221124865562530385034554737363257762818434508881857816203932555484223318873305688842222073653492383290845539181457942114403528433259381436561190345827605743082802042023763252430924417452686754440927232989175146822803355413018836002635772822534169582408752632769382108609757930600024920751557590898455524173060024207275430037593734403138003562823477461577106364142389740189863328855876224154532672119195546930758738325715548491185090514130537046854240029818537563855731003642274950213252432550343834210501908620385303646788805208902738735591518782394457617213696808714072235514474757829024316084051521904501394730282670092439496471495341910042311717304330005917061383626674313165704670682120801889770927310541121018529777138800332738158365908162303746360480611006007531901857182574119900959748123835600034918285758404664955718748699569217266011263992204449798755074686865565294483735180939980102386804436728128526760896161220931222625425933405322731118985510078653408996793072769299779538768176699469364485000530618064475889231967880819473541768799293880019027179762438154111378556010192157174792859862188319179477347532827885322787308766910832703546872684302045259688226992241075005235497818801437996186489450623573205595262906362756695506148313264497390567500025039673126180418991256420278912521473451358585493214699311925396149009197547581304285057928836023923698499376271157530090688883172620040931440674938299971395893561474800200454144368417628371768157528943229493693956699373702467639356795906707067222159478232486423613837697043532231328174679094964525791523003027632292003980966646738797186437219400630359381710853738032667937827337874099301249876396290379892111715128923014566066145893749259629008971911283214368658328875770605853847811445911033570709806923204611941390246609210431868640952326021195237858011369327094744736838606419701028394279125956712971856917075227897376985424956493784547775422202290017310605993188147970668176316032693661228511171747619971832543502722142662289601263434010745262037985461140721139056465119312335437724046621067372922612496574772123242252485204710587527363210173898725249113854597646006188932462267569585550817671978703148014442896800816745832622491777437333764153398302436132929901516575706752186828891190084010108415825193474180555148202630374312907592624007790297845071664067996076976629993805771296507803967267845248432387563530584250389616866468551201785727151512996915541187092635916711415407263050816711813367166797637835706795181763450034486796693118828635145527601092446339919689015455329421911283822470063533104659549554862105013722449972333820534210274944764907442694212332708727577989468164258565829468488187996486205428915867533063774163431915539289009074749593743469484389181559132777609758632815412317272074749699672197132192763197807582423738659170010796759412553049733480546561357297313009823381419405692909398352659261063165656024217305510409818722531756758500195130601320986866076334048788845893731959527125580385258348185756990619045847808586952109820587509627976109265041544842578289034460139275210683328399737483056294840844541934897630498123892488082666289452703361826062205981273960567869399055926669672990459302346351475844648288762899532984282788096696476057079813386227125940929105170736273906007246574752047403749390204158641301944084687549125958788233593582997601411579624644249957258746867865242765389077482504573920974471267316488893270782624588205223897214821917583788599041073911129259329427060090442355998021318023057834211999977869743586983029334971120505641761566654798218392347991023663741352526404612594697153089925694113091096753848181781390213426243173086814699103945781940909005554794932822831124175339291903010575258578805619230271300059534994259259388260623517411689363161288946328486804979264009513556639355360943725257423532206023742488135742662487623892349094647362828099273075869852550702335308078766589721549055079830986366003644958118435564969475068703736307031400554300857189446658111982491553862957560497854223077546826616343870388824529850907065105395413504310731961953877889704659753439657
2 |
--------------------------------------------------------------------------------
/Ocaml/OCamlMakefile:
--------------------------------------------------------------------------------
1 | ###########################################################################
2 | # OCamlMakefile
3 | # Copyright (C) 1999- Markus Mottl
4 | #
5 | # For updates see:
6 | # http://www.ocaml.info/home/ocaml_sources.html
7 | #
8 | ###########################################################################
9 |
10 | # Modified by damien for .glade.ml compilation
11 |
12 | # Set these variables to the names of the sources to be processed and
13 | # the result variable. Order matters during linkage!
14 |
15 | ifndef SOURCES
16 | SOURCES := foo.ml
17 | endif
18 | export SOURCES
19 |
20 | ifndef RES_CLIB_SUF
21 | RES_CLIB_SUF := _stubs
22 | endif
23 | export RES_CLIB_SUF
24 |
25 | ifndef RESULT
26 | RESULT := foo
27 | endif
28 | export RESULT := $(strip $(RESULT))
29 |
30 | export LIB_PACK_NAME
31 |
32 | ifndef DOC_FILES
33 | DOC_FILES := $(filter %.mli, $(SOURCES))
34 | endif
35 | export DOC_FILES
36 | FIRST_DOC_FILE := $(firstword $(DOC_FILES))
37 |
38 | export BCSUFFIX
39 | export NCSUFFIX
40 |
41 | ifndef TOPSUFFIX
42 | TOPSUFFIX := .top
43 | endif
44 | export TOPSUFFIX
45 |
46 | # Eventually set include- and library-paths, libraries to link,
47 | # additional compilation-, link- and ocamlyacc-flags
48 | # Path- and library information needs not be written with "-I" and such...
49 | # Define THREADS if you need it, otherwise leave it unset (same for
50 | # USE_CAMLP4)!
51 |
52 | export THREADS
53 | export VMTHREADS
54 | export ANNOTATE
55 | export USE_CAMLP4
56 |
57 | export INCDIRS
58 | export LIBDIRS
59 | export EXTLIBDIRS
60 | export RESULTDEPS
61 | export OCAML_DEFAULT_DIRS
62 |
63 | export LIBS
64 | export CLIBS
65 | export CFRAMEWORKS
66 |
67 | export OCAMLFLAGS
68 | export OCAMLNCFLAGS
69 | export OCAMLBCFLAGS
70 |
71 | export OCAMLLDFLAGS
72 | export OCAMLNLDFLAGS
73 | export OCAMLBLDFLAGS
74 |
75 | export OCAMLMKLIB_FLAGS
76 |
77 | ifndef OCAMLCPFLAGS
78 | OCAMLCPFLAGS := a
79 | endif
80 | export OCAMLCPFLAGS
81 |
82 | ifndef DOC_DIR
83 | DOC_DIR := doc
84 | endif
85 | export DOC_DIR
86 |
87 | export PPFLAGS
88 |
89 | export LFLAGS
90 | export YFLAGS
91 | export IDLFLAGS
92 |
93 | export OCAMLDOCFLAGS
94 |
95 | export OCAMLFIND_INSTFLAGS
96 |
97 | export DVIPSFLAGS
98 |
99 | export STATIC
100 |
101 | # Add a list of optional trash files that should be deleted by "make clean"
102 | export TRASH
103 |
104 | ECHO := echo
105 |
106 | ifdef REALLY_QUIET
107 | export REALLY_QUIET
108 | ECHO := true
109 | LFLAGS := $(LFLAGS) -q
110 | YFLAGS := $(YFLAGS) -q
111 | endif
112 |
113 | #################### variables depending on your OCaml-installation
114 |
115 | SYSTEM := $(shell $(OCAMLFIND) c -config 2>/dev/null | sed -ne "s/system: //p" | tr -d '\015')
116 | # This may be
117 | # - mingw
118 | # - mingw64
119 | # - win32
120 | # - win64
121 | # - cygwin
122 | # - some other string means Unix
123 | # - empty means ocamlc does not support -config
124 |
125 | ifneq ($(filter $(SYSTEM),mingw mingw64),)
126 | MINGW=1
127 | endif
128 | ifneq ($(filter $(SYSTEM),win32 win64),)
129 | MSVC=1
130 | endif
131 |
132 | ifdef MINGW
133 | export MINGW
134 | WIN32 := 1
135 | ## The default value 'cc' makes 'ocamlc -cc "cc"' raises the error 'The
136 | ## NTVDM CPU has encountered an illegal instruction'.
137 | #ifndef CC
138 | # MNO_CYGWIN := $(shell gcc -Wextra -v --help 2>/dev/null | grep -q '\-mno-cygwin'; echo $$?)
139 | # CC := gcc
140 | #else
141 | # MNO_CYGWIN := $(shell $$CC -Wextra -v --help 2>/dev/null | grep -q '\-mno-cygwin'; echo $$?)
142 | #endif
143 | ## We are compiling with cygwin tools:
144 | #ifeq ($(MNO_CYGWIN),0)
145 | #CFLAGS_WIN32 := -mno-cygwin
146 | #endif
147 | ## The OCaml C header files use this flag:
148 | #CFLAGS += -D__MINGW32__
149 | CC:= $(shell $(OCAMLFIND) ocamlc -config | awk '/^bytecomp_c_compiler/ {for(i=2;i<=NF;i++) printf "%s " ,$$i}' | tr -d '\015')
150 | AR:= $(shell $(OCAMLFIND) ocamlc -config | awk '/^bytecomp_c_compiler/ {print $$2}' | sed 's|gcc|ar|g' | tr -d '\015')
151 | endif
152 | ifdef MSVC
153 | export MSVC
154 | WIN32 := 1
155 | ifndef STATIC
156 | CPPFLAGS_WIN32 := -DCAML_DLL
157 | endif
158 | CFLAGS_WIN32 += -nologo
159 | EXT_OBJ := obj
160 | EXT_LIB := lib
161 | ifeq ($(CC),gcc)
162 | # work around GNU Make default value
163 | ifdef THREADS
164 | CC := cl -MT
165 | else
166 | CC := cl
167 | endif
168 | endif
169 | ifeq ($(CXX),g++)
170 | # work around GNU Make default value
171 | CXX := $(CC)
172 | endif
173 | CFLAG_O := -Fo
174 | endif
175 | ifdef WIN32
176 | EXT_CXX := cpp
177 | EXE := .exe
178 | endif
179 |
180 | ifndef EXT_OBJ
181 | EXT_OBJ := o
182 | endif
183 | ifndef EXT_LIB
184 | EXT_LIB := a
185 | endif
186 | ifndef EXT_CXX
187 | EXT_CXX := cc
188 | endif
189 | ifndef EXE
190 | EXE := # empty
191 | endif
192 | ifndef CFLAG_O
193 | CFLAG_O := -o # do not delete this comment (preserves trailing whitespace)!
194 | endif
195 |
196 | export CC
197 | export CXX
198 | export CFLAGS
199 | export CXXFLAGS
200 | export LDFLAGS
201 | export CPPFLAGS
202 |
203 | ifndef RPATH_FLAG
204 | ifdef ELF_RPATH_FLAG
205 | RPATH_FLAG := $(ELF_RPATH_FLAG)
206 | else
207 | RPATH_FLAG := -R
208 | endif
209 | endif
210 | export RPATH_FLAG
211 |
212 | ifndef MSVC
213 | ifndef PIC_CFLAGS
214 | PIC_CFLAGS := -fPIC
215 | endif
216 | ifndef PIC_CPPFLAGS
217 | PIC_CPPFLAGS := -DPIC
218 | endif
219 | endif
220 |
221 | export PIC_CFLAGS
222 | export PIC_CPPFLAGS
223 |
224 | BCRESULT := $(addsuffix $(BCSUFFIX), $(RESULT))
225 | NCRESULT := $(addsuffix $(NCSUFFIX), $(RESULT))
226 | TOPRESULT := $(addsuffix $(TOPSUFFIX), $(RESULT))
227 |
228 | ifndef OCAMLFIND
229 | OCAMLFIND := ocamlfind
230 | endif
231 | export OCAMLFIND
232 |
233 | ifndef OCAML
234 | OCAML := ocaml
235 | endif
236 | export OCAML
237 |
238 | ifndef OCAMLC
239 | OCAMLC := ocamlc
240 | endif
241 | export OCAMLC
242 |
243 | ifndef OCAMLOPT
244 | OCAMLOPT := ocamlopt
245 | endif
246 | export OCAMLOPT
247 |
248 | ifndef OCAMLMKTOP
249 | OCAMLMKTOP := ocamlmktop
250 | endif
251 | export OCAMLMKTOP
252 |
253 | ifndef OCAMLCP
254 | OCAMLCP := ocamlcp
255 | endif
256 | export OCAMLCP
257 |
258 | ifndef OCAMLDEP
259 | OCAMLDEP := ocamldep
260 | endif
261 | export OCAMLDEP
262 |
263 | ifndef OCAMLLEX
264 | OCAMLLEX := ocamllex
265 | endif
266 | export OCAMLLEX
267 |
268 | ifndef OCAMLYACC
269 | OCAMLYACC := ocamlyacc
270 | endif
271 | export OCAMLYACC
272 |
273 | ifndef OCAMLMKLIB
274 | OCAMLMKLIB := ocamlmklib
275 | endif
276 | export OCAMLMKLIB
277 |
278 | ifndef OCAML_GLADECC
279 | OCAML_GLADECC := lablgladecc2
280 | endif
281 | export OCAML_GLADECC
282 |
283 | ifndef OCAML_GLADECC_FLAGS
284 | OCAML_GLADECC_FLAGS :=
285 | endif
286 | export OCAML_GLADECC_FLAGS
287 |
288 | ifndef CAMELEON_REPORT
289 | CAMELEON_REPORT := report
290 | endif
291 | export CAMELEON_REPORT
292 |
293 | ifndef CAMELEON_REPORT_FLAGS
294 | CAMELEON_REPORT_FLAGS :=
295 | endif
296 | export CAMELEON_REPORT_FLAGS
297 |
298 | ifndef CAMELEON_ZOGGY
299 | CAMELEON_ZOGGY := camlp4o pa_zog.cma pr_o.cmo
300 | endif
301 | export CAMELEON_ZOGGY
302 |
303 | ifndef CAMELEON_ZOGGY_FLAGS
304 | CAMELEON_ZOGGY_FLAGS :=
305 | endif
306 | export CAMELEON_ZOGGY_FLAGS
307 |
308 | ifndef OXRIDL
309 | OXRIDL := oxridl
310 | endif
311 | export OXRIDL
312 |
313 | ifndef CAMLIDL
314 | CAMLIDL := camlidl
315 | endif
316 | export CAMLIDL
317 |
318 | ifndef CAMLIDLDLL
319 | CAMLIDLDLL := camlidldll
320 | endif
321 | export CAMLIDLDLL
322 |
323 | ifndef NOIDLHEADER
324 | MAYBE_IDL_HEADER := -header
325 | endif
326 | export NOIDLHEADER
327 |
328 | export NO_CUSTOM
329 |
330 | ifndef CAMLP4
331 | CAMLP4 := camlp4
332 | endif
333 | export CAMLP4
334 |
335 | ifndef REAL_OCAMLFIND
336 | ifdef PACKS
337 | ifndef CREATE_LIB
338 | ifdef THREADS
339 | PACKS += threads
340 | endif
341 | endif
342 | empty :=
343 | space := $(empty) $(empty)
344 | comma := ,
345 | ifdef PREDS
346 | PRE_OCAML_FIND_PREDICATES := $(subst $(space),$(comma),$(PREDS))
347 | PRE_OCAML_FIND_PACKAGES := $(subst $(space),$(comma),$(PACKS))
348 | OCAML_FIND_PREDICATES := -predicates $(PRE_OCAML_FIND_PREDICATES)
349 | # OCAML_DEP_PREDICATES := -syntax $(PRE_OCAML_FIND_PREDICATES)
350 | OCAML_FIND_PACKAGES := $(OCAML_FIND_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES)
351 | OCAML_DEP_PACKAGES := $(OCAML_DEP_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES)
352 | else
353 | OCAML_FIND_PACKAGES := -package $(subst $(space),$(comma),$(PACKS))
354 | OCAML_DEP_PACKAGES :=
355 | endif
356 | OCAML_FIND_LINKPKG := -linkpkg
357 | REAL_OCAMLFIND := $(OCAMLFIND)
358 | endif
359 | endif
360 |
361 | export OCAML_FIND_PACKAGES
362 | export OCAML_DEP_PACKAGES
363 | export OCAML_FIND_LINKPKG
364 | export REAL_OCAMLFIND
365 |
366 | ifndef OCAMLDOC
367 | OCAMLDOC := ocamldoc
368 | endif
369 | export OCAMLDOC
370 |
371 | ifndef LATEX
372 | LATEX := latex
373 | endif
374 | export LATEX
375 |
376 | ifndef DVIPS
377 | DVIPS := dvips
378 | endif
379 | export DVIPS
380 |
381 | ifndef PS2PDF
382 | PS2PDF := ps2pdf
383 | endif
384 | export PS2PDF
385 |
386 | ifndef OCAMLMAKEFILE
387 | OCAMLMAKEFILE := OCamlMakefile
388 | endif
389 | export OCAMLMAKEFILE
390 |
391 | ifndef OCAMLLIBPATH
392 | OCAMLLIBPATH := \
393 | $(shell $(OCAMLFIND) ocamlc -where 2>/dev/null || echo /usr/local/lib/ocaml)
394 | endif
395 | export OCAMLLIBPATH
396 |
397 | ifndef OCAML_LIB_INSTALL
398 | OCAML_LIB_INSTALL := $(OCAMLLIBPATH)/contrib
399 | endif
400 | export OCAML_LIB_INSTALL
401 |
402 | ###########################################################################
403 |
404 | #################### change following sections only if
405 | #################### you know what you are doing!
406 |
407 | # delete target files when a build command fails
408 | .PHONY: .DELETE_ON_ERROR
409 | .DELETE_ON_ERROR:
410 |
411 | # for pedants using "--warn-undefined-variables"
412 | export MAYBE_IDL
413 | export REAL_RESULT
414 | export CAMLIDLFLAGS
415 | export THREAD_FLAG
416 | export RES_CLIB
417 | export MAKEDLL
418 | export ANNOT_FLAG
419 | export C_OXRIDL
420 | export SUBPROJS
421 | export CFLAGS_WIN32
422 | export CPPFLAGS_WIN32
423 |
424 | INCFLAGS :=
425 |
426 | SHELL := /bin/sh
427 |
428 | MLDEPDIR := ._d
429 | BCDIDIR := ._bcdi
430 | NCDIDIR := ._ncdi
431 |
432 | FILTER_EXTNS := %.mli %.ml %.mll %.mly %.idl %.oxridl %.c %.m %.$(EXT_CXX) %.rep %.zog %.glade
433 |
434 | FILTERED := $(filter $(FILTER_EXTNS), $(SOURCES))
435 | SOURCE_DIRS := $(filter-out ./, $(sort $(dir $(FILTERED))))
436 |
437 | FILTERED_REP := $(filter %.rep, $(FILTERED))
438 | DEP_REP := $(FILTERED_REP:%.rep=$(MLDEPDIR)/%.d)
439 | AUTO_REP := $(FILTERED_REP:.rep=.ml)
440 |
441 | FILTERED_ZOG := $(filter %.zog, $(FILTERED))
442 | DEP_ZOG := $(FILTERED_ZOG:%.zog=$(MLDEPDIR)/%.d)
443 | AUTO_ZOG := $(FILTERED_ZOG:.zog=.ml)
444 |
445 | FILTERED_GLADE := $(filter %.glade, $(FILTERED))
446 | DEP_GLADE := $(FILTERED_GLADE:%.glade=$(MLDEPDIR)/%.d)
447 | AUTO_GLADE := $(FILTERED_GLADE:.glade=.ml)
448 |
449 | FILTERED_ML := $(filter %.ml, $(FILTERED))
450 | DEP_ML := $(FILTERED_ML:%.ml=$(MLDEPDIR)/%.d)
451 |
452 | FILTERED_MLI := $(filter %.mli, $(FILTERED))
453 | DEP_MLI := $(FILTERED_MLI:.mli=.di)
454 |
455 | FILTERED_MLL := $(filter %.mll, $(FILTERED))
456 | DEP_MLL := $(FILTERED_MLL:%.mll=$(MLDEPDIR)/%.d)
457 | AUTO_MLL := $(FILTERED_MLL:.mll=.ml)
458 |
459 | FILTERED_MLY := $(filter %.mly, $(FILTERED))
460 | DEP_MLY := $(FILTERED_MLY:%.mly=$(MLDEPDIR)/%.d) $(FILTERED_MLY:.mly=.di)
461 | AUTO_MLY := $(FILTERED_MLY:.mly=.mli) $(FILTERED_MLY:.mly=.ml)
462 |
463 | FILTERED_IDL := $(filter %.idl, $(FILTERED))
464 | DEP_IDL := $(FILTERED_IDL:%.idl=$(MLDEPDIR)/%.d) $(FILTERED_IDL:.idl=.di)
465 | C_IDL := $(FILTERED_IDL:%.idl=%_stubs.c)
466 | ifndef NOIDLHEADER
467 | C_IDL += $(FILTERED_IDL:.idl=.h)
468 | endif
469 | OBJ_C_IDL := $(FILTERED_IDL:%.idl=%_stubs.$(EXT_OBJ))
470 | AUTO_IDL := $(FILTERED_IDL:.idl=.mli) $(FILTERED_IDL:.idl=.ml) $(C_IDL)
471 |
472 | FILTERED_OXRIDL := $(filter %.oxridl, $(FILTERED))
473 | DEP_OXRIDL := $(FILTERED_OXRIDL:%.oxridl=$(MLDEPDIR)/%.d) $(FILTERED_OXRIDL:.oxridl=.di)
474 | AUTO_OXRIDL := $(FILTERED_OXRIDL:.oxridl=.mli) $(FILTERED_OXRIDL:.oxridl=.ml) $(C_OXRIDL)
475 |
476 | FILTERED_C_CXX := $(filter %.c %.m %.$(EXT_CXX), $(FILTERED))
477 | OBJ_C_CXX := $(FILTERED_C_CXX:.c=.$(EXT_OBJ))
478 | OBJ_C_CXX := $(OBJ_C_CXX:.m=.$(EXT_OBJ))
479 | OBJ_C_CXX := $(OBJ_C_CXX:.$(EXT_CXX)=.$(EXT_OBJ))
480 |
481 | PRE_TARGETS += $(AUTO_MLL) $(AUTO_MLY) $(AUTO_IDL) $(AUTO_OXRIDL) $(AUTO_ZOG) $(AUTO_REP) $(AUTO_GLADE)
482 |
483 | ALL_DEPS := $(DEP_ML) $(DEP_MLI) $(DEP_MLL) $(DEP_MLY) $(DEP_IDL) $(DEP_OXRIDL) $(DEP_ZOG) $(DEP_REP) $(DEP_GLADE)
484 |
485 | MLDEPS := $(filter %.d, $(ALL_DEPS))
486 | MLIDEPS := $(filter %.di, $(ALL_DEPS))
487 | BCDEPIS := $(MLIDEPS:%.di=$(BCDIDIR)/%.di)
488 | NCDEPIS := $(MLIDEPS:%.di=$(NCDIDIR)/%.di)
489 |
490 | ALLML := $(filter %.mli %.ml %.mll %.mly %.idl %.oxridl %.rep %.zog %.glade, $(FILTERED))
491 |
492 | IMPLO_INTF := $(ALLML:%.mli=%.mli.__)
493 | IMPLO_INTF := $(foreach file, $(IMPLO_INTF), \
494 | $(basename $(file)).cmi $(basename $(file)).cmo)
495 | IMPLO_INTF := $(filter-out %.mli.cmo, $(IMPLO_INTF))
496 | IMPLO_INTF := $(IMPLO_INTF:%.mli.cmi=%.cmi)
497 |
498 | IMPLX_INTF := $(IMPLO_INTF:.cmo=.cmx)
499 |
500 | INTF := $(filter %.cmi, $(IMPLO_INTF))
501 | IMPL_CMO := $(filter %.cmo, $(IMPLO_INTF))
502 | IMPL_CMX := $(IMPL_CMO:.cmo=.cmx)
503 | IMPL_ASM := $(IMPL_CMO:.cmo=.asm)
504 | IMPL_S := $(IMPL_CMO:.cmo=.s)
505 |
506 | OBJ_LINK := $(OBJ_C_IDL) $(OBJ_C_CXX)
507 | OBJ_FILES := $(IMPL_CMO:.cmo=.$(EXT_OBJ)) $(OBJ_LINK)
508 |
509 | EXECS := $(addsuffix $(EXE), \
510 | $(sort $(TOPRESULT) $(BCRESULT) $(NCRESULT)))
511 | ifdef WIN32
512 | EXECS += $(BCRESULT).dll $(NCRESULT).dll
513 | endif
514 |
515 | CLIB_BASE := $(RESULT)$(RES_CLIB_SUF)
516 | ifneq ($(strip $(OBJ_LINK)),)
517 | RES_CLIB := lib$(CLIB_BASE).$(EXT_LIB)
518 | endif
519 |
520 | ifdef WIN32
521 | DLLSONAME := dll$(CLIB_BASE).dll
522 | else
523 | DLLSONAME := dll$(CLIB_BASE).so
524 | endif
525 |
526 | NONEXECS := $(INTF) $(IMPL_CMO) $(IMPL_CMX) $(IMPL_ASM) $(IMPL_S) \
527 | $(OBJ_FILES) $(PRE_TARGETS) $(BCRESULT).cma $(NCRESULT).cmxa \
528 | $(NCRESULT).$(EXT_LIB) $(BCRESULT).cmi $(BCRESULT).cmo \
529 | $(NCRESULT).cmi $(NCRESULT).cmx $(NCRESULT).$(EXT_OBJ) \
530 | $(RES_CLIB) $(IMPL_CMO:.cmo=.annot) \
531 | $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(LIB_PACK_NAME).cmx \
532 | $(LIB_PACK_NAME).$(EXT_OBJ)
533 |
534 | ifndef STATIC
535 | NONEXECS += $(DLLSONAME)
536 | endif
537 |
538 | ifndef LIBINSTALL_FILES
539 | LIBINSTALL_FILES := $(RESULT).mli $(RESULT).cmi $(RESULT).cma \
540 | $(RESULT).cmxa $(RESULT).$(EXT_LIB) $(RES_CLIB)
541 | ifndef STATIC
542 | ifneq ($(strip $(OBJ_LINK)),)
543 | LIBINSTALL_FILES += $(DLLSONAME)
544 | endif
545 | endif
546 | endif
547 |
548 | export LIBINSTALL_FILES
549 |
550 | ifdef WIN32
551 | # some extra stuff is created while linking DLLs
552 | NONEXECS += $(BCRESULT).$(EXT_LIB) $(BCRESULT).exp $(NCRESULT).exp $(CLIB_BASE).exp $(CLIB_BASE).lib
553 | endif
554 |
555 | TARGETS := $(EXECS) $(NONEXECS)
556 |
557 | # If there are IDL-files
558 | ifneq ($(strip $(FILTERED_IDL)),)
559 | MAYBE_IDL := -cclib -lcamlidl
560 | endif
561 |
562 | ifdef USE_CAMLP4
563 | CAMLP4PATH := \
564 | $(shell $(CAMLP4) -where 2>/dev/null || echo /usr/local/lib/camlp4)
565 | INCFLAGS := -I $(CAMLP4PATH)
566 | CINCFLAGS := -I$(CAMLP4PATH)
567 | endif
568 |
569 | INCFLAGS := $(INCFLAGS) $(INCDIRS:%=-I %) $(SOURCE_DIRS:%=-I %) $(OCAML_DEFAULT_DIRS:%=-I %)
570 | CINCFLAGS += $(SOURCE_DIRS:%=-I%) $(INCDIRS:%=-I%) $(OCAML_DEFAULT_DIRS:%=-I%)
571 |
572 | ifndef MSVC
573 | CLIBFLAGS += $(SOURCE_DIRS:%=-L%) $(LIBDIRS:%=-L%) \
574 | $(EXTLIBDIRS:%=-L%) $(OCAML_DEFAULT_DIRS:%=-L%)
575 |
576 | ifeq ($(ELF_RPATH), yes)
577 | CLIBFLAGS += $(EXTLIBDIRS:%=-Wl,$(RPATH_FLAG)%)
578 | endif
579 | endif
580 |
581 | ifndef PROFILING
582 | INTF_OCAMLC := $(OCAMLC)
583 | else
584 | ifndef THREADS
585 | INTF_OCAMLC := $(OCAMLCP) -p $(OCAMLCPFLAGS)
586 | else
587 | # OCaml does not support profiling byte code
588 | # with threads (yet), therefore we force an error.
589 | ifndef REAL_OCAMLC
590 | $(error Profiling of multithreaded byte code not yet supported by OCaml)
591 | endif
592 | INTF_OCAMLC := $(OCAMLC)
593 | endif
594 | endif
595 |
596 | ifndef MSVC
597 | COMMON_LDFLAGS := $(LDFLAGS:%=-ccopt %) $(SOURCE_DIRS:%=-ccopt -L%) \
598 | $(LIBDIRS:%=-ccopt -L%) $(EXTLIBDIRS:%=-ccopt -L%) \
599 | $(EXTLIBDIRS:%=-ccopt -Wl $(OCAML_DEFAULT_DIRS:%=-ccopt -L%))
600 |
601 | ifeq ($(ELF_RPATH),yes)
602 | COMMON_LDFLAGS += $(EXTLIBDIRS:%=-ccopt -Wl,$(RPATH_FLAG)%)
603 | endif
604 | else
605 | COMMON_LDFLAGS := -ccopt "/link -NODEFAULTLIB:LIBC $(LDFLAGS:%=%) $(SOURCE_DIRS:%=-LIBPATH:%) \
606 | $(LIBDIRS:%=-LIBPATH:%) $(EXTLIBDIRS:%=-LIBPATH:%) \
607 | $(OCAML_DEFAULT_DIRS:%=-LIBPATH:%) "
608 | endif
609 |
610 | CLIBS_OPTS := $(CLIBS:%=-cclib -l%) $(CFRAMEWORKS:%=-cclib '-framework %')
611 | ifdef MSVC
612 | ifndef STATIC
613 | # MSVC libraries do not have 'lib' prefix
614 | CLIBS_OPTS := $(CLIBS:%=-cclib %.lib)
615 | endif
616 | endif
617 |
618 | ifneq ($(strip $(OBJ_LINK)),)
619 | ifdef CREATE_LIB
620 | OBJS_LIBS := -cclib -l$(CLIB_BASE) $(CLIBS_OPTS) $(MAYBE_IDL)
621 | else
622 | OBJS_LIBS := $(OBJ_LINK) $(CLIBS_OPTS) $(MAYBE_IDL)
623 | endif
624 | else
625 | OBJS_LIBS := $(CLIBS_OPTS) $(MAYBE_IDL)
626 | endif
627 |
628 | ifdef LIB_PACK_NAME
629 | FOR_PACK_NAME := $(shell echo $(LIB_PACK_NAME) | awk '{print toupper(substr($$0,1,1))substr($$0,2)}')
630 | endif
631 |
632 | # If we have to make byte-code
633 | ifndef REAL_OCAMLC
634 | BYTE_OCAML := y
635 |
636 | # EXTRADEPS is added dependencies we have to insert for all
637 | # executable files we generate. Ideally it should be all of the
638 | # libraries we use, but it's hard to find the ones that get searched on
639 | # the path since I don't know the paths built into the compiler, so
640 | # just include the ones with slashes in their names.
641 | EXTRADEPS := $(addsuffix .cma,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i))))
642 |
643 |
644 | ifndef LIB_PACK_NAME
645 | SPECIAL_OCAMLFLAGS := $(OCAMLBCFLAGS)
646 | else
647 | SPECIAL_OCAMLFLAGS := -for-pack $(FOR_PACK_NAME) $(OCAMLBCFLAGS)
648 | endif
649 |
650 | REAL_OCAMLC := $(INTF_OCAMLC)
651 |
652 | REAL_IMPL := $(IMPL_CMO)
653 | REAL_IMPL_INTF := $(IMPLO_INTF)
654 | IMPL_SUF := .cmo
655 |
656 | DEPFLAGS :=
657 | MAKE_DEPS := $(MLDEPS) $(BCDEPIS)
658 |
659 | ifdef CREATE_LIB
660 | override CFLAGS := $(PIC_CFLAGS) $(CFLAGS)
661 | override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS)
662 | ifndef STATIC
663 | ifneq ($(strip $(OBJ_LINK)),)
664 | MAKEDLL := $(DLLSONAME)
665 | ALL_LDFLAGS := -dllib $(DLLSONAME)
666 | endif
667 | endif
668 | endif
669 |
670 | ifndef NO_CUSTOM
671 | ifneq "$(strip $(OBJ_LINK) $(THREADS) $(MAYBE_IDL) $(CLIBS) $(CFRAMEWORKS))" ""
672 | ALL_LDFLAGS += -custom
673 | endif
674 | endif
675 |
676 | ALL_LDFLAGS += $(INCFLAGS) $(OCAMLLDFLAGS) $(OCAMLBLDFLAGS) \
677 | $(COMMON_LDFLAGS) $(LIBS:%=%.cma)
678 | CAMLIDLDLLFLAGS :=
679 |
680 | ifdef THREADS
681 | ifdef VMTHREADS
682 | THREAD_FLAG := -vmthread
683 | else
684 | THREAD_FLAG := -thread
685 | endif
686 | ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS)
687 | ifndef CREATE_LIB
688 | ifndef REAL_OCAMLFIND
689 | ALL_LDFLAGS := unix.cma threads.cma $(ALL_LDFLAGS)
690 | endif
691 | endif
692 | endif
693 |
694 | # we have to make native-code
695 | else
696 | EXTRADEPS := $(addsuffix .cmxa,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i))))
697 | ifndef PROFILING
698 | SPECIAL_OCAMLFLAGS := $(OCAMLNCFLAGS)
699 | PLDFLAGS :=
700 | else
701 | SPECIAL_OCAMLFLAGS := -p $(OCAMLNCFLAGS)
702 | PLDFLAGS := -p
703 | endif
704 |
705 | ifndef LIB_PACK_NAME
706 | SPECIAL_OCAMLFLAGS := $(OCAMLNCFLAGS)
707 | else
708 | SPECIAL_OCAMLFLAGS := -for-pack $(FOR_PACK_NAME) $(OCAMLNCFLAGS)
709 | endif
710 | REAL_IMPL := $(IMPL_CMX)
711 | REAL_IMPL_INTF := $(IMPLX_INTF)
712 | IMPL_SUF := .cmx
713 |
714 | override CPPFLAGS := -DNATIVE_CODE $(CPPFLAGS)
715 |
716 | DEPFLAGS := -native
717 | MAKE_DEPS := $(MLDEPS) $(NCDEPIS)
718 |
719 | ALL_LDFLAGS := $(PLDFLAGS) $(INCFLAGS) $(OCAMLLDFLAGS) \
720 | $(OCAMLNLDFLAGS) $(COMMON_LDFLAGS)
721 | CAMLIDLDLLFLAGS := -opt
722 |
723 | ifndef CREATE_LIB
724 | ALL_LDFLAGS += $(LIBS:%=%.cmxa)
725 | else
726 | override CFLAGS := $(PIC_CFLAGS) $(CFLAGS)
727 | override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS)
728 | endif
729 |
730 | ifdef THREADS
731 | THREAD_FLAG := -thread
732 | ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS)
733 | ifndef CREATE_LIB
734 | ifndef REAL_OCAMLFIND
735 | ALL_LDFLAGS := unix.cmxa threads.cmxa $(ALL_LDFLAGS)
736 | endif
737 | endif
738 | endif
739 | endif
740 |
741 | export MAKE_DEPS
742 |
743 | ifdef ANNOTATE
744 | ANNOT_FLAG := -annot
745 | else
746 | endif
747 |
748 | ALL_OCAMLCFLAGS := $(THREAD_FLAG) $(ANNOT_FLAG) $(OCAMLFLAGS) \
749 | $(INCFLAGS) $(SPECIAL_OCAMLFLAGS)
750 |
751 | ifdef make_deps
752 | -include $(MAKE_DEPS)
753 | PRE_TARGETS :=
754 | endif
755 |
756 | ###########################################################################
757 | # USER RULES
758 |
759 | # Call "OCamlMakefile QUIET=" to get rid of all of the @'s.
760 | QUIET=@
761 |
762 | # generates byte-code (default)
763 | byte-code: $(PRE_TARGETS)
764 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
765 | REAL_RESULT="$(BCRESULT)" make_deps=yes
766 | bc: byte-code
767 |
768 | byte-code-nolink: $(PRE_TARGETS)
769 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
770 | REAL_RESULT="$(BCRESULT)" make_deps=yes
771 | bcnl: byte-code-nolink
772 |
773 | top: $(PRE_TARGETS)
774 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(TOPRESULT) \
775 | REAL_RESULT="$(BCRESULT)" make_deps=yes
776 |
777 | # generates native-code
778 |
779 | native-code: $(PRE_TARGETS)
780 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
781 | REAL_RESULT="$(NCRESULT)" \
782 | REAL_OCAMLC="$(OCAMLOPT)" \
783 | make_deps=yes
784 | nc: native-code
785 |
786 | native-code-nolink: $(PRE_TARGETS)
787 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
788 | REAL_RESULT="$(NCRESULT)" \
789 | REAL_OCAMLC="$(OCAMLOPT)" \
790 | make_deps=yes
791 | ncnl: native-code-nolink
792 |
793 | # generates byte-code libraries
794 | byte-code-library: $(PRE_TARGETS)
795 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
796 | $(RES_CLIB) $(BCRESULT).cma \
797 | REAL_RESULT="$(BCRESULT)" \
798 | CREATE_LIB=yes \
799 | make_deps=yes
800 | bcl: byte-code-library
801 |
802 | # generates native-code libraries
803 | native-code-library: $(PRE_TARGETS)
804 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
805 | $(RES_CLIB) $(NCRESULT).cmxa \
806 | REAL_RESULT="$(NCRESULT)" \
807 | REAL_OCAMLC="$(OCAMLOPT)" \
808 | CREATE_LIB=yes \
809 | make_deps=yes
810 | ncl: native-code-library
811 |
812 | ifdef WIN32
813 | # generates byte-code dll
814 | byte-code-dll: $(PRE_TARGETS)
815 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
816 | $(RES_CLIB) $(BCRESULT).dll \
817 | REAL_RESULT="$(BCRESULT)" \
818 | make_deps=yes
819 | bcd: byte-code-dll
820 |
821 | # generates native-code dll
822 | native-code-dll: $(PRE_TARGETS)
823 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
824 | $(RES_CLIB) $(NCRESULT).dll \
825 | REAL_RESULT="$(NCRESULT)" \
826 | REAL_OCAMLC="$(OCAMLOPT)" \
827 | make_deps=yes
828 | ncd: native-code-dll
829 | endif
830 |
831 | # generates byte-code with debugging information
832 | debug-code: $(PRE_TARGETS)
833 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
834 | REAL_RESULT="$(BCRESULT)" make_deps=yes \
835 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
836 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
837 | dc: debug-code
838 |
839 | debug-code-nolink: $(PRE_TARGETS)
840 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
841 | REAL_RESULT="$(BCRESULT)" make_deps=yes \
842 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
843 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
844 | dcnl: debug-code-nolink
845 |
846 | # generates byte-code with debugging information (native code)
847 | debug-native-code: $(PRE_TARGETS)
848 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
849 | REAL_RESULT="$(NCRESULT)" make_deps=yes \
850 | REAL_OCAMLC="$(OCAMLOPT)" \
851 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
852 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
853 | dnc: debug-native-code
854 |
855 | debug-native-code-nolink: $(PRE_TARGETS)
856 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
857 | REAL_RESULT="$(NCRESULT)" make_deps=yes \
858 | REAL_OCAMLC="$(OCAMLOPT)" \
859 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
860 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
861 | dncnl: debug-native-code-nolink
862 |
863 | # generates byte-code libraries with debugging information
864 | debug-code-library: $(PRE_TARGETS)
865 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
866 | $(RES_CLIB) $(BCRESULT).cma \
867 | REAL_RESULT="$(BCRESULT)" make_deps=yes \
868 | CREATE_LIB=yes \
869 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
870 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
871 | dcl: debug-code-library
872 |
873 | # generates byte-code libraries with debugging information (native code)
874 | debug-native-code-library: $(PRE_TARGETS)
875 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
876 | $(RES_CLIB) $(NCRESULT).cmxa \
877 | REAL_RESULT="$(NCRESULT)" make_deps=yes \
878 | REAL_OCAMLC="$(OCAMLOPT)" \
879 | CREATE_LIB=yes \
880 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \
881 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
882 | dncl: debug-native-code-library
883 |
884 | # generates byte-code for profiling
885 | profiling-byte-code: $(PRE_TARGETS)
886 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
887 | REAL_RESULT="$(BCRESULT)" PROFILING="y" \
888 | make_deps=yes
889 | pbc: profiling-byte-code
890 |
891 | # generates native-code
892 |
893 | profiling-native-code: $(PRE_TARGETS)
894 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
895 | REAL_RESULT="$(NCRESULT)" \
896 | REAL_OCAMLC="$(OCAMLOPT)" \
897 | PROFILING="y" \
898 | make_deps=yes
899 | pnc: profiling-native-code
900 |
901 | # generates byte-code libraries
902 | profiling-byte-code-library: $(PRE_TARGETS)
903 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
904 | $(RES_CLIB) $(BCRESULT).cma \
905 | REAL_RESULT="$(BCRESULT)" PROFILING="y" \
906 | CREATE_LIB=yes \
907 | make_deps=yes
908 | pbcl: profiling-byte-code-library
909 |
910 | # generates native-code libraries
911 | profiling-native-code-library: $(PRE_TARGETS)
912 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
913 | $(RES_CLIB) $(NCRESULT).cmxa \
914 | REAL_RESULT="$(NCRESULT)" PROFILING="y" \
915 | REAL_OCAMLC="$(OCAMLOPT)" \
916 | CREATE_LIB=yes \
917 | make_deps=yes
918 | pncl: profiling-native-code-library
919 |
920 | # packs byte-code objects
921 | pack-byte-code: $(PRE_TARGETS)
922 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT).cmo \
923 | REAL_RESULT="$(BCRESULT)" \
924 | PACK_LIB=yes make_deps=yes
925 | pabc: pack-byte-code
926 |
927 | # packs native-code objects
928 | pack-native-code: $(PRE_TARGETS)
929 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
930 | $(NCRESULT).cmx $(NCRESULT).$(EXT_OBJ) \
931 | REAL_RESULT="$(NCRESULT)" \
932 | REAL_OCAMLC="$(OCAMLOPT)" \
933 | PACK_LIB=yes make_deps=yes
934 | panc: pack-native-code
935 |
936 | # generates HTML-documentation
937 | htdoc: $(DOC_DIR)/$(RESULT)/html/index.html
938 |
939 | # generates Latex-documentation
940 | ladoc: $(DOC_DIR)/$(RESULT)/latex/doc.tex
941 |
942 | # generates PostScript-documentation
943 | psdoc: $(DOC_DIR)/$(RESULT)/latex/doc.ps
944 |
945 | # generates PDF-documentation
946 | pdfdoc: $(DOC_DIR)/$(RESULT)/latex/doc.pdf
947 |
948 | # generates all supported forms of documentation
949 | doc: htdoc ladoc psdoc pdfdoc
950 |
951 | ###########################################################################
952 | # LOW LEVEL RULES
953 |
954 | $(REAL_RESULT): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS) $(RESULTDEPS)
955 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) \
956 | $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \
957 | $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@$(EXE) \
958 | $(REAL_IMPL)
959 |
960 | nolink: $(REAL_IMPL_INTF) $(OBJ_LINK)
961 |
962 | ifdef WIN32
963 | $(REAL_RESULT).dll: $(REAL_IMPL_INTF) $(OBJ_LINK)
964 | $(CAMLIDLDLL) $(CAMLIDLDLLFLAGS) $(OBJ_LINK) $(CLIBS) \
965 | -o $@ $(REAL_IMPL)
966 | endif
967 |
968 | %$(TOPSUFFIX): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS)
969 | $(REAL_OCAMLFIND) $(OCAMLMKTOP) \
970 | $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \
971 | $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@$(EXE) \
972 | $(REAL_IMPL)
973 |
974 | .SUFFIXES: .mli .ml .cmi .cmo .cmx .cma .cmxa .$(EXT_OBJ) \
975 | .mly .di .d .$(EXT_LIB) .idl %.oxridl .c .m .$(EXT_CXX) .h .so \
976 | .rep .zog .glade
977 |
978 | ifndef STATIC
979 | ifdef MINGW
980 | # From OCaml 3.11.0, ocamlmklib is available on windows
981 | OCAMLMLIB_EXISTS = $(shell which $(OCAMLMKLIB))
982 | ifeq ($(strip $(OCAMLMLIB_EXISTS)),)
983 | $(DLLSONAME): $(OBJ_LINK)
984 | $(CC) $(CFLAGS) $(CFLAGS_WIN32) $(OBJ_LINK) -shared -o $@ \
985 | $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/lib%.a))) \
986 | '$(OCAMLLIBPATH)/ocamlrun.a' \
987 | -Wl,--whole-archive \
988 | -Wl,--export-all-symbols \
989 | -Wl,--allow-multiple-definition \
990 | -Wl,--enable-auto-import
991 | else
992 | $(DLLSONAME): $(OBJ_LINK)
993 | $(OCAMLMKLIB) $(INCFLAGS) $(CLIBFLAGS) \
994 | -o $(CLIB_BASE) $(OBJ_LINK) $(CLIBS:%=-l%) \
995 | $(CFRAMEWORKS:%=-framework %) \
996 | $(OCAMLMKLIB_FLAGS)
997 | endif
998 | else
999 | #ifdef MSVC
1000 | #$(DLLSONAME): $(OBJ_LINK)
1001 | # link /NOLOGO /DLL /OUT:$@ $(OBJ_LINK) \
1002 | # $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/%.lib))) \
1003 | # '$(OCAMLLIBPATH)/ocamlrun.lib'
1004 | #
1005 | #else
1006 | $(DLLSONAME): $(OBJ_LINK)
1007 | $(OCAMLMKLIB) $(INCFLAGS) $(CLIBFLAGS) \
1008 | -o $(CLIB_BASE) $(OBJ_LINK) $(CLIBS:%=-l%) $(CFRAMEWORKS:%=-framework %) \
1009 | $(OCAMLMKLIB_FLAGS)
1010 | #endif
1011 | endif
1012 | endif
1013 |
1014 | ifndef LIB_PACK_NAME
1015 | $(RESULT).cma: $(REAL_IMPL_INTF) $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS)
1016 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(REAL_IMPL)
1017 |
1018 | $(RESULT).cmxa $(RESULT).$(EXT_LIB): $(REAL_IMPL_INTF) $(EXTRADEPS) $(RESULTDEPS)
1019 | $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(REAL_IMPL)
1020 | else
1021 | # Packing a bytecode library
1022 | LIB_PACK_NAME_MLI = $(wildcard $(LIB_PACK_NAME).mli)
1023 | ifeq ($(LIB_PACK_NAME_MLI),)
1024 | LIB_PACK_NAME_CMI = $(LIB_PACK_NAME).cmi
1025 | else
1026 | # $(LIB_PACK_NAME).mli exists, it likely depends on other compiled interfaces
1027 | LIB_PACK_NAME_CMI =
1028 | $(LIB_PACK_NAME).cmi: $(REAL_IMPL_INTF)
1029 | endif
1030 | ifdef BYTE_OCAML
1031 | $(LIB_PACK_NAME_CMI) $(LIB_PACK_NAME).cmo: $(REAL_IMPL_INTF)
1032 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -pack -o $(LIB_PACK_NAME).cmo $(OCAMLLDFLAGS) $(REAL_IMPL)
1033 | # Packing into a unit which can be transformed into a library
1034 | # Remember the .ml's must have been compiled with -for-pack $(LIB_PACK_NAME)
1035 | else
1036 | $(LIB_PACK_NAME_CMI) $(LIB_PACK_NAME).cmx: $(REAL_IMPL_INTF)
1037 | $(REAL_OCAMLFIND) $(OCAMLOPT) -pack -o $(LIB_PACK_NAME).cmx $(OCAMLLDFLAGS) $(REAL_IMPL)
1038 | endif
1039 |
1040 | $(RESULT).cma: $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS)
1041 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(LIB_PACK_NAME).cmo
1042 |
1043 | $(RESULT).cmxa $(RESULT).$(EXT_LIB): $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmx $(EXTRADEPS) $(RESULTDEPS)
1044 | $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(OBJS_LIBS) $(filter-out -custom, $(ALL_LDFLAGS)) -o $@ $(LIB_PACK_NAME).cmx
1045 | endif
1046 |
1047 | $(RES_CLIB): $(OBJ_LINK)
1048 | ifndef MSVC
1049 | ifneq ($(strip $(OBJ_LINK)),)
1050 | $(AR) rcs $@ $(OBJ_LINK)
1051 | endif
1052 | else
1053 | ifneq ($(strip $(OBJ_LINK)),)
1054 | lib -nologo -debugtype:cv -out:$(RES_CLIB) $(OBJ_LINK)
1055 | endif
1056 | endif
1057 |
1058 | %.cmi: %.mli $(EXTRADEPS)
1059 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
1060 | if [ -z "$$pp" ]; then \
1061 | $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
1062 | -c $(THREAD_FLAG) $(ANNOT_FLAG) \
1063 | $(OCAMLFLAGS) $(INCFLAGS) $<; \
1064 | $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
1065 | -c $(THREAD_FLAG) $(ANNOT_FLAG) \
1066 | $(OCAMLFLAGS) $(INCFLAGS) $<; \
1067 | else \
1068 | $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
1069 | -c -pp \"$$pp $(PPFLAGS)\" $(THREAD_FLAG) $(ANNOT_FLAG) \
1070 | $(OCAMLFLAGS) $(INCFLAGS) $<; \
1071 | $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
1072 | -c -pp "$$pp $(PPFLAGS)" $(THREAD_FLAG) $(ANNOT_FLAG) \
1073 | $(OCAMLFLAGS) $(INCFLAGS) $<; \
1074 | fi
1075 |
1076 | %.cmi: %$(IMPL_SUF);
1077 |
1078 | %$(IMPL_SUF) %.$(EXT_OBJ): %.ml $(EXTRADEPS)
1079 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
1080 | if [ -z "$$pp" ]; then \
1081 | $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
1082 | -c $(ALL_OCAMLCFLAGS) $<; \
1083 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
1084 | -c $(ALL_OCAMLCFLAGS) $<; \
1085 | else \
1086 | $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
1087 | -c -pp \"$$pp $(PPFLAGS)\" $(ALL_OCAMLCFLAGS) $<; \
1088 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
1089 | -c -pp "$$pp $(PPFLAGS)" $(ALL_OCAMLCFLAGS) $<; \
1090 | fi
1091 |
1092 | .PRECIOUS: %.ml
1093 | %.ml: %.mll
1094 | $(OCAMLLEX) $(LFLAGS) $<
1095 |
1096 | .PRECIOUS: %.ml %.mli
1097 | %.ml %.mli: %.mly
1098 | $(OCAMLYACC) $(YFLAGS) $<
1099 | $(QUIET)pp=`sed -n -e 's/.*(\*pp \([^*]*\) \*).*/\1/p;q' $<`; \
1100 | if [ ! -z "$$pp" ]; then \
1101 | mv $*.ml $*.ml.temporary; \
1102 | echo "(*pp $$pp $(PPFLAGS)*)" > $*.ml; \
1103 | cat $*.ml.temporary >> $*.ml; \
1104 | rm $*.ml.temporary; \
1105 | mv $*.mli $*.mli.temporary; \
1106 | echo "(*pp $$pp $(PPFLAGS)*)" > $*.mli; \
1107 | cat $*.mli.temporary >> $*.mli; \
1108 | rm $*.mli.temporary; \
1109 | fi
1110 |
1111 |
1112 | .PRECIOUS: %.ml
1113 | %.ml: %.rep
1114 | $(CAMELEON_REPORT) $(CAMELEON_REPORT_FLAGS) -gen $<
1115 |
1116 | .PRECIOUS: %.ml
1117 | %.ml: %.zog
1118 | $(CAMELEON_ZOGGY) $(CAMELEON_ZOGGY_FLAGS) -impl $< > $@
1119 |
1120 | .PRECIOUS: %.ml
1121 | %.ml: %.glade
1122 | $(OCAML_GLADECC) $(OCAML_GLADECC_FLAGS) $< > $@
1123 |
1124 | .PRECIOUS: %.ml %.mli
1125 | %.ml %.mli: %.oxridl
1126 | $(OXRIDL) $<
1127 |
1128 | .PRECIOUS: %.ml %.mli %_stubs.c %.h
1129 | %.ml %.mli %_stubs.c %.h: %.idl
1130 | $(CAMLIDL) $(MAYBE_IDL_HEADER) $(IDLFLAGS) \
1131 | $(CAMLIDLFLAGS) $<
1132 | $(QUIET)if [ $(NOIDLHEADER) ]; then touch $*.h; fi
1133 |
1134 | %.$(EXT_OBJ): %.c
1135 | $(OCAMLC) -c -ccopt "$(CFLAGS) \
1136 | $(CPPFLAGS) $(CPPFLAGS_WIN32) \
1137 | $(CFLAGS_WIN32) $(CINCFLAGS) $(CFLAG_O)$@ " $<
1138 |
1139 | %.$(EXT_OBJ): %.m
1140 | $(CC) -c $(CFLAGS) $(CINCFLAGS) $(CPPFLAGS) \
1141 | -I'$(OCAMLLIBPATH)' \
1142 | $< $(CFLAG_O)$@
1143 |
1144 | %.$(EXT_OBJ): %.$(EXT_CXX)
1145 | $(CXX) -c $(CXXFLAGS) $(CINCFLAGS) $(CPPFLAGS) \
1146 | -I'$(OCAMLLIBPATH)' \
1147 | $< $(CFLAG_O)$@
1148 |
1149 | $(MLDEPDIR)/%.d: %.ml
1150 | $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi
1151 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
1152 | if [ -z "$$pp" ]; then \
1153 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
1154 | $(INCFLAGS) $< \> $@; \
1155 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
1156 | $(INCFLAGS) $< > $@; \
1157 | else \
1158 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
1159 | -pp \"$$pp $(PPFLAGS)\" $(INCFLAGS) $< \> $@; \
1160 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
1161 | -pp "$$pp $(PPFLAGS)" $(INCFLAGS) $< > $@; \
1162 | fi
1163 |
1164 | $(BCDIDIR)/%.di $(NCDIDIR)/%.di: %.mli
1165 | $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi
1166 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
1167 | if [ -z "$$pp" ]; then \
1168 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(INCFLAGS) $< \> $@; \
1169 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(INCFLAGS) $< > $@; \
1170 | else \
1171 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \
1172 | -pp \"$$pp $(PPFLAGS)\" $(INCFLAGS) $< \> $@; \
1173 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \
1174 | -pp "$$pp $(PPFLAGS)" $(INCFLAGS) $< > $@; \
1175 | fi
1176 |
1177 | $(DOC_DIR)/$(RESULT)/html:
1178 | mkdir -p $@
1179 |
1180 | $(DOC_DIR)/$(RESULT)/html/index.html: $(DOC_DIR)/$(RESULT)/html $(DOC_FILES)
1181 | rm -rf $*
1182 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $(FIRST_DOC_FILE)`; \
1183 | if [ -z "$$pp" ]; then \
1184 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -html -d $< $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES); \
1185 | $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -html -d $< $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES); \
1186 | else \
1187 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp \"$$pp $(PPFLAGS)\" -html -d $< $(OCAMLDOCFLAGS) \
1188 | $(INCFLAGS) $(DOC_FILES); \
1189 | $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp "$$pp $(PPFLAGS)" -html -d $< $(OCAMLDOCFLAGS) \
1190 | $(INCFLAGS) $(DOC_FILES); \
1191 | fi
1192 |
1193 | $(DOC_DIR)/$(RESULT)/latex:
1194 | mkdir -p $@
1195 |
1196 | $(DOC_DIR)/$(RESULT)/latex/doc.tex: $(DOC_DIR)/$(RESULT)/latex $(DOC_FILES)
1197 | rm -rf $*
1198 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $(FIRST_DOC_FILE)`; \
1199 | if [ -z "$$pp" ]; then \
1200 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -latex $(OCAMLDOCFLAGS) $(INCFLAGS) \
1201 | $(DOC_FILES) -o $@; \
1202 | $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -latex $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES) \
1203 | -o $@; \
1204 | else \
1205 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp \"$$pp $(PPFLAGS)\" -latex $(OCAMLDOCFLAGS) \
1206 | $(INCFLAGS) $(DOC_FILES) -o $@; \
1207 | $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp "$$pp $(PPFLAGS)" -latex $(OCAMLDOCFLAGS) \
1208 | $(INCFLAGS) $(DOC_FILES) -o $@; \
1209 | fi
1210 |
1211 | $(DOC_DIR)/$(RESULT)/latex/doc.ps: $(DOC_DIR)/$(RESULT)/latex/doc.tex
1212 | cd $(DOC_DIR)/$(RESULT)/latex && \
1213 | $(LATEX) doc.tex && \
1214 | $(LATEX) doc.tex && \
1215 | $(DVIPS) $(DVIPSFLAGS) doc.dvi -o $(@F)
1216 |
1217 | $(DOC_DIR)/$(RESULT)/latex/doc.pdf: $(DOC_DIR)/$(RESULT)/latex/doc.ps
1218 | cd $(DOC_DIR)/$(RESULT)/latex && $(PS2PDF) $(
2 |
1849 |
--------------------------------------------------------------------------------