• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<project name="gdx-controllers-desktop-MacOsX-64" basedir="." default="postcompile">
2	<!-- include the environment -->
3	<property environment="env"/>
4	<!-- output directory for temporary object files -->
5	<property name="buildDir" value="target/macosx64" />
6	<!-- output directory for the shared library -->
7	<property name="libsDir" value="../libs/macosx64" />
8	<!-- the name of the shared library -->
9	<property name="libName" value="libgdx-controllers-desktop64.dylib"/>
10	<!-- the jni header jniPlatform to use -->
11	<property name="jniPlatform" value="mac"/>
12	<!-- the compilerPrefix for the C & C++ compilers -->
13	<property name="compilerPrefix" value=""/>
14	<!--  the compilerSuffix for the C & C++ compilers -->
15	<property name="compilerSuffix" value="" />
16
17	<!-- define gcc compiler, options and files to compile -->
18	<property name="gcc" value="${compilerPrefix}gcc${compilerSuffix}"/>
19	<property name="gcc-opts" value="-c -Wall -O2 -arch x86_64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.5"/>
20	<fileset id="gcc-files" dir="./">
21		<exclude name="target/"/>
22				<include name="memcpy_wrap.c"/>
23		<include name="**/*.c"/>
24
25
26	</fileset>
27
28	<!-- define g++ compiler, options and files to compile -->
29	<property name="g++" value="${compilerPrefix}g++${compilerSuffix}"/>
30	<property name="g++-opts" value="-c -Wall -O2 -arch x86_64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.5 -x objective-c++"/>
31	<fileset id="g++-files" dir="./">
32		<exclude name="target/"/>
33				<include name="*.cpp"/>
34		<include name="ois-v1-4svn/src/*.cpp"/>
35		<include name="ois-v1-4svn/src/mac/*.mm"/>
36		<include name="ois-v1-4svn/src/mac/MacHIDManager.cpp"/>
37		<include name="ois-v1-4svn/src/mac/MacJoyStick.cpp"/>
38
39
40	</fileset>
41
42	<!-- define linker and options -->
43	<property name="linker" value="${compilerPrefix}g++${compilerSuffix}"/>
44	<property name="linker-opts" value="-shared -arch x86_64 -mmacosx-version-min=10.5"/>
45	<property name="libraries" value="-framework CoreServices -framework Carbon -framework IOKit -framework Cocoa"/>
46
47	<!-- cleans the build directory, removes all object files and shared libs -->
48	<target name="clean">
49		<delete includeemptydirs="true" quiet="true">
50			<fileset dir="${buildDir}"/>
51			<fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
52		</delete>
53	</target>
54
55	<target name="precompile">
56		<condition property="compiler-found">
57			<and>
58				<or>
59					<!-- Include both b/c Windows might be either -->
60					<available file="${g++}" filepath="${env.PATH}"/>
61					<available file="${g++}" filepath="${env.Path}"/>
62				</or>
63				<or>
64					<!-- Include both b/c Windows might be either -->
65					<available file="${gcc}" filepath="${env.PATH}"/>
66					<available file="${gcc}" filepath="${env.Path}"/>
67				</or>
68			</and>
69		</condition>
70		<condition property="has-compiler">
71			<equals arg1="${compiler-found}" arg2="true"/>
72		</condition>
73
74	</target>
75
76	<target name="create-build-dir" depends="precompile" if="has-compiler">
77		<!-- FIXME this is pretty nasty :/ -->
78		<copy todir="${buildDir}">
79			<fileset refid="g++-files"/>
80			<fileset refid="gcc-files"/>
81		</copy>
82		<delete>
83			<fileset dir="${buildDir}">
84				<include name="*"/>
85				<exclude name="*.o"/>
86			</fileset>
87		</delete>
88	</target>
89
90	<!-- compiles all C and C++ files to object files in the build directory -->
91	<target name="compile" depends="create-build-dir" if="has-compiler">
92		<mkdir dir="${buildDir}"/>
93		<apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
94			<arg line="${g++-opts}"/>
95			<arg value="-Ijni-headers"/>
96			<arg value="-Ijni-headers/${jniPlatform}"/>
97			<arg value="-I."/>
98						<arg value="-Iois-v1-4svn/includes"/>
99			<arg value="-Idinput/"/>
100
101			<srcfile/>
102			<arg value="-o"/>
103			<targetfile/>
104			<fileset refid="g++-files"/>
105			<compositemapper>
106				<mapper type="glob" from="*.cpp" to="*.o"/>
107				<mapper type="glob" from="*.mm" to="*.o"/>
108			</compositemapper>
109		</apply>
110		<apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
111			<arg line="${gcc-opts}"/>
112			<arg value="-Ijni-headers"/>
113			<arg value="-Ijni-headers/${jniPlatform}"/>
114			<arg value="-I."/>
115						<arg value="-Iois-v1-4svn/includes"/>
116			<arg value="-Idinput/"/>
117
118			<srcfile/>
119			<arg value="-o"/>
120			<targetfile/>
121			<fileset refid="gcc-files"/>
122			<compositemapper>
123				<mapper type="glob" from="*.c" to="*.o"/>
124				<mapper type="glob" from="*.m" to="*.o"/>
125			</compositemapper>
126		</apply>
127	</target>
128
129	<!-- links the shared library based on the previously compiled object files -->
130	<target name="link" depends="compile" if="has-compiler">
131		<fileset dir="${buildDir}" id="objFileSet">
132			<patternset>
133				<include name="**/*.o" />
134			</patternset>
135		</fileset>
136		<pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
137		<mkdir dir="${libsDir}" />
138		<exec executable="${linker}" failonerror="true" dir="${buildDir}">
139			<arg line="${linker-opts}" />
140			<arg value="-o" />
141			<arg path="${libsDir}/${libName}" />
142			<arg line="${objFiles}"/>
143			<arg line="${libraries}" />
144		</exec>
145	</target>
146
147	<target name="postcompile" depends="link">
148
149	</target>
150</project>
151