Skip to content

Commit 8d92b2e

Browse files
committed
preparations for continuous builds and cross compilation (WIP).
1 parent 129e783 commit 8d92b2e

File tree

4 files changed

+136
-6
lines changed

4 files changed

+136
-6
lines changed

Makefile

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
BITS=32
2+
3+
ifeq ($(BITS),32)
4+
CC=gcc32
5+
NS=win-x86
6+
SCFLAGS=
7+
else
8+
BITS=64
9+
CC=gcc64
10+
NS=win-x64
11+
SCFLAGS=-D_MSC_VER=1400
12+
endif
13+
14+
CFLAGS=-m$(BITS) -shared -c -fno-rtti -fPIC $(SCFLAGS) -I/usr/lib/jvm/java-6-sun/include -I../common/platform-libs/jre-include/win32
15+
LFLAGS=-m$(BITS) -shared -fno-rtti -fPIC
16+
17+
SRC1=src/native/common/CPU.c
18+
SRC2=src/native/windows/WindowsDynamicLinkerImpl_JNI.c
19+
20+
OBJ1=build/obj/$(NS)/CPU.o
21+
OBJ2=build/obj/$(NS)/WindowsDynamicLinkerImpl_JNI.o
22+
23+
BIN=build/obj/$(NS)/gluegen-rt.dll
24+
25+
all: $(BIN)
26+
27+
$(BIN): $(OBJ1) $(OBJ2)
28+
$(CC) $(LFLAGS) $(OBJ1) $(OBJ2) -o $(BIN)
29+
30+
$(OBJ1): $(SRC1)
31+
$(CC) $(CFLAGS) $(SRC1) -o $(OBJ1)
32+
33+
$(OBJ2): $(SRC2)
34+
$(CC) $(CFLAGS) $(SRC2) -o $(OBJ2)
35+
36+
clean:
37+
rm -f $(BIN) $(OBJ1) $(OBJ2)
38+

make/build-crosscompile.xml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
Document : build-crosscompile.xml
4+
Created on : November 18, 2009, 3:38 PM
5+
Author : Michael Bien
6+
Description:
7+
crosscompiler configuration and ant task for crosscompiling for
8+
linux32/64 and win32/64 on linux64 as host system.
9+
-->
10+
<project name="gluegen-crosscompiler" basedir="." default="gluegen.cross-compile">
11+
12+
<import file="build.xml"/>
13+
14+
<!-- TODO remove hardcoded path -->
15+
<property name="java.includes.dir.windows" value="/media/store/gluegenSetup/win32"/>
16+
17+
<!-- crosscompiles to other platforms, requirement: linux64 host os -->
18+
<target name="gluegen.cross-compile">
19+
20+
<echo message=" - - - cross-compiling gluegen natives - - - "/>
21+
22+
<antcall target="build.nativelibrary" inheritall="false">
23+
<param name="namespace" value="linux-amd64"/>
24+
<param name="crosscompile" value="true"/>
25+
<param name="build.dir" value="${build.dir}"/>
26+
<param name="isLinuxAMD64" value="true"/>
27+
<param name="isLinux" value="true"/>
28+
<param name="isUnix" value="true"/>
29+
<param name="isX11" value="true"/>
30+
</antcall>
31+
32+
<antcall target="build.nativelibrary" inheritall="false">
33+
<param name="namespace" value="linux-x86"/>
34+
<param name="crosscompile" value="true"/>
35+
<param name="build.dir" value="${build.dir}"/>
36+
<param name="isLinuxX86" value="true"/>
37+
<param name="isLinux" value="true"/>
38+
<param name="isUnix" value="true"/>
39+
<param name="isX11" value="true"/>
40+
</antcall>
41+
42+
<!-- use mingw crosscompiler to compile for win32 and win64 (linux64 only) -->
43+
<antcall target="build.nativelibrary" inheritall="false">
44+
<param name="namespace" value="linux-amd64"/>
45+
<param name="crosscompile" value="true"/>
46+
<param name="build.dir" value="${build.dir}"/>
47+
<param name="isLinuxAMD64" value="true"/>
48+
<param name="isLinux" value="true"/>
49+
<param name="isUnix" value="true"/>
50+
<param name="isX11" value="true"/>
51+
52+
<!-- overwrite -->
53+
<param name="java.includes.dir.platform" value="${java.includes.dir.windows}"/>
54+
<param name="compiler.cfg.id" value="compiler.cfg.linux64.mingw64"/>
55+
<param name="linker.cfg.id" value="linker.cfg.linux64.mingw64.gluegen"/>
56+
</antcall>
57+
58+
<antcall target="build.nativelibrary" inheritall="false">
59+
<param name="namespace" value="linux-x86"/>
60+
<param name="crosscompile" value="true"/>
61+
<param name="build.dir" value="${build.dir}"/>
62+
<param name="isLinuxX86" value="true"/>
63+
<param name="isLinux" value="true"/>
64+
<param name="isUnix" value="true"/>
65+
<param name="isX11" value="true"/>
66+
67+
<!-- overwrite -->
68+
<param name="java.includes.dir.platform" value="${java.includes.dir.windows}"/>
69+
<param name="compiler.cfg.id" value="compiler.cfg.linux64.mingw32"/>
70+
<param name="linker.cfg.id" value="linker.cfg.linux64.mingw32.gluegen"/>
71+
</antcall>
72+
73+
<echo message=" - - - gluegen natives cross-compiled - - - "/>
74+
75+
</target>
76+
77+
78+
<target name="configure.crosscompiler">
79+
<linker id="linker.cfg.linux64.mingw64.gluegen" extends="linker.cfg.linux64.mingw64">
80+
</linker>
81+
82+
<linker id="linker.cfg.linux64.mingw32.gluegen" extends="linker.cfg.linux64.mingw32">
83+
</linker>
84+
</target>
85+
86+
</project>

make/build.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,8 @@
329329
<msvc.manifest objdir="${build}/obj" dllname="gluegen-rt" />
330330
</target>
331331

332-
<target name="c.build" depends="c.configure" unless="build.javaonly" >
332+
<target name="c.build" depends="init, c.configure" unless="build.javaonly" >
333+
333334
<fail message="Requires '${c.compiler.src.files.os}'" unless="c.compiler.src.files.os"/>
334335
<fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/>
335336
<fail message="Requires '${linker.cfg.id}'" unless="linker.cfg.id"/>
@@ -344,16 +345,19 @@
344345

345346
<condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition>
346347

347-
<mkdir dir="${build}/obj" />
348+
<!--namespace can be overwritten from outside-->
349+
<property name="namespace" value=""/>
350+
351+
<mkdir dir="${build}/obj/${namespace}" />
348352

349353
<property name="c.compiler.src.files.common" value="src/native/common/*.c" />
350354

351355
<echo message="Compiling ${c.compiler.src.files.os} ${c.compiler.src.files.common}" />
352356
<echo message="user.dir=${user.dir}" />
353357

354358
<cc outtype="shared"
355-
objdir="${build}/obj"
356-
outfile="${build}/obj/${output.lib.name}"
359+
objdir="${build}/obj/${namespace}"
360+
outfile="${build}/obj/${namespace}/${output.lib.name}"
357361
optimize="${c.compiler.optimise}"
358362
debug="${c.compiler.debug}"
359363
multithreaded="true"
@@ -399,7 +403,7 @@
399403
</jar>
400404
</target>
401405

402-
<target name="build.nativelibrary" unless="build.javaonly" >
406+
<target name="build.nativelibrary" depends="init" unless="build.javaonly" >
403407
<antcall target="c.build" inheritRefs="true" />
404408
</target>
405409

make/gluegen-cpptasks.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,7 @@
639639

640640
<linker id="linker.cfg.linux64.mingw32" classname="net.sf.antcontrib.cpptasks.gcc.Gcc32Linker">
641641
<linkerarg value="-m32"/>
642+
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
642643
</linker>
643644
<!--
644645
<linker id="linker.cfg.solaris" name="suncc">
@@ -653,7 +654,8 @@
653654
</linker>
654655
-->
655656
<linker id="linker.cfg.win32.mingw" name="gcc" incremental="false">
656-
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
657+
<linkerarg value="-m32"/>
658+
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
657659
</linker>
658660

659661
<linker id="linker.cfg.win32.msvc" name="msvc" incremental="false">

0 commit comments

Comments
 (0)