summaryrefslogtreecommitdiff
path: root/docs/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.html
blob: a1f4df63e085ae508e0aceedcbd133eb9f0e1a3e (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
<!DOCTYPE html>
<html lang="en">
<head>
    
    <link rel="stylesheet" href="https://unpkg.com/latex.css/style.min.css" />
    <link rel="stylesheet" href="/assets/main.css" />
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Compiling AutoDock Vina on iOS</title>
    <meta name="og:site_name" content="Navan Chauhan" />
    <link rel="canonical" href="https://web.navan.dev/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.html" />
    <meta name="twitter:url" content="https://web.navan.dev/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.html />
    <meta name="og:url" content="https://web.navan.dev/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.html" />
    <meta name="twitter:title" content="Compiling AutoDock Vina on iOS" />
    <meta name="og:title" content="Compiling AutoDock Vina on iOS" />
    <meta name="description" content="Compiling AutoDock Vina on iOS" />
    <meta name="twitter:description" content="Compiling AutoDock Vina on iOS" />
    <meta name="og:description" content="Compiling AutoDock Vina on iOS" />
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="shortcut icon" href="/images/favicon.png" type="image/png" />
    <link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan" />
    <meta name="twitter:image" content="https://web.navan.dev/images/opengraph/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.png" />
    <meta name="og:image" content="https://web.navan.dev/images/opengraph/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS.png" />
    <meta name="google-site-verification" content="LVeSZxz-QskhbEjHxOi7-BM5dDxTg53x2TwrjFxfL0k" />
    <script data-goatcounter="https://navanchauhan.goatcounter.com/count"
        async src="//gc.zgo.at/count.js"></script>
    <script defer data-domain="web.navan.dev" src="https://plausible.io/js/plausible.js"></script>
    <link rel="manifest" href="/manifest.json" />
    
</head>
<body>
    <center><nav style="display: block;">
|
<a href="/">home</a> |
<a href="/about/">about/links</a> |
<a href="/posts/">posts</a> |
<a href="/3D-Designs/">3D designs</a> |
<!--<a href="/publications/">publications</a> |-->
<!--<a href="/repo/">iOS repo</a> |-->
<a href="/feed.rss">RSS Feed</a> |
</nav>
</center>
    
<main>

	<h1>Compiling AutoDock Vina on iOS</h1>

<p>Why? Because I can.</p>

<h2>Installing makedepend</h2>

<p><code>makedepend</code> is a Unix tool used to generate dependencies of C source files. Most modern programs do not use this anymore, but then again AutoDock Vina's source code hasn't been changed since 2011. The first hurdle came when I saw that there was no makedepend command, neither was there any package on any development repository for iOS. So, I tracked down the original source code for <code>makedepend</code> (https://github.com/DerellLicht/makedepend). According to the repository this is actually the source code for the makedepend utility that came with some XWindows distribution back around Y2K. I am pretty sure there is a problem with my current compiler configuration because I had to manually edit the <code>Makefile</code> to provide the path to the iOS SDKs using the <code>-isysroot</code> flag.</p>

<h2>Editing the Makefile</h2>

<p>Original Makefile ( I used the provided mac Makefile base )</p>

<pre><code>BASE=/usr/local
BOOST_VERSION=1_41
BOOST_INCLUDE = $(BASE)/include
C_PLATFORM=-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4
GPP=/usr/bin/g++
C_OPTIONS= -O3 -DNDEBUG
BOOST_LIB_VERSION=

include ../../makefile_common
</code></pre>

<p>I installed Boost 1.68.0-1 from Sam Bingner's repository. ( Otherwise I would have had to compile boost too 😫 )</p>

<p>Edited Makefile</p>

<pre><code>BASE=/usr
BOOST_VERSION=1_68
BOOST_INCLUDE = $(BASE)/include
C_PLATFORM=-arch arm64 -isysroot /var/sdks/Latest.sdk
GPP=/usr/bin/g++
C_OPTIONS= -O3 -DNDEBUG
BOOST_LIB_VERSION=

include ../../makefile_common

</code></pre>

<h2>Updating the Source Code</h2>

<p>Of course since Boost 1.41 many things have been added and deprecated, that is why I had to edit the source code to make it work with version 1.68</p>

<h3>Error 1 - No Matching Constructor</h3>

<pre><code>../../../src/main/main.cpp:50:9: error: no matching constructor for initialization of 'path' (aka 'boost::filesystem::path')
return path(str, boost::filesystem::native);
</code></pre>

<p>This was an easy fix, I just commented this and added a return statement to return the path</p>

<pre><code>return path(str)
</code></pre>

<h3>Error 2 - No Member Named 'native<em>file</em>string'</h3>

<pre><code>../../../src/main/main.cpp:665:57: error: no member named 'native_file_string' in 'boost::filesystem::path'
                std::cerr &lt;&lt; "\n\nError: could not open \"" &lt;&lt; e.name.native_file_string() &lt;&lt; "\" for " &lt;&lt; (e.in ? "reading" : "writing") &lt;&lt; ".\n";
                                                               ~~~~~~ ^
../../../src/main/main.cpp:677:80: error: no member named 'native_file_string' in 'boost::filesystem::path'
                std::cerr &lt;&lt; "\n\nParse error on line " &lt;&lt; e.line &lt;&lt; " in file \"" &lt;&lt; e.file.native_file_string() &lt;&lt; "\": " &lt;&lt; e.reason &lt;&lt; '\n';
                                                                                      ~~~~~~ ^
2 errors generated.
</code></pre>

<p>Turns out <code>native_file_string</code> was deprecated in Boost 1.57 and replaced with just <code>string</code></p>

<h3>Error 3 - Library Not Found</h3>

<p>This one still boggles me because there was no reason for it to not work, as a workaround I downloaded the DEB, extracted it and used that path for compiling.</p>

<h3>Error 4 - No Member Named 'native<em>file</em>string' Again.</h3>

<p>But, this time in another file and I quickly fixed it</p>

<h2>Moment of Truth</h2>

<p>Obviously it was working on my iPad, but would it work on another device? I transferred the compiled binary and </p>

<p><img src="/assets/posts/autodock-vina/s1.png" alt="&quot;AutoDock Vina running on my iPhone&quot;" /></p>

<p>The package is available on my repository and only depends on boost. ( Both, Vina and Vina-Split are part of the package)</p>

	<blockquote>If you have scrolled this far, consider subscribing to my mailing list <a href="https://listmonk.navan.dev/subscription/form">here.</a> You can subscribe to either a specific type of post you are interested in, or subscribe to everything with the "Everything" list.</blockquote>
	<script data-isso="https://comments.navan.dev/"
        src="https://comments.navan.dev/js/embed.min.js"></script>
	<section id="isso-thread">
	    <noscript>Javascript needs to be activated to view comments.</noscript>
	</section>
</main>

    <script src="assets/manup.min.js"></script>
    <script src="/pwabuilder-sw-register.js"></script>    
</body>
</html>