0
|
1 Makefile.embedded - hybrid DynCall makefiles for GNU, BSD and SUN make
|
|
2 ======================================================================
|
|
3
|
|
4
|
|
5 Brief overview
|
|
6 --------------
|
|
7 This is one of the latest build systems designed for DynCall.
|
|
8 It was designed for being embeddable in bigger 'make' based systems.
|
|
9 It uses a very simple structure and it does not require any 'configure' phase.
|
|
10 Instead the user can specify the CFLAGS and LDFLAGS by himself.
|
|
11 For a couple of platforms, the make system supports phony targets of popular
|
|
12 operating-systems such as 'bsd'.
|
|
13
|
|
14 Building the library:
|
|
15 ---------------------
|
|
16 $ make -f Makefile.embedded <variant>
|
|
17
|
|
18 Building the tests:
|
|
19 -------------------
|
|
20 $ cd test ; make -f Makefile.embedded <variant>
|
|
21
|
|
22 Installation:
|
|
23 -------------
|
|
24 $ make -f Makefile.embedded PREFIX=/usr/local install
|
|
25
|
|
26 Installation with support for DESTDIR:
|
|
27 --------------------------------------
|
|
28 $ make -f Makefile.embedded DESTDIR=/tmp/staging PREFIX=/usr/local install
|
|
29
|
|
30
|
|
31 Available variants:
|
|
32 -------------------
|
|
33 bsd Free/Net/Open/DragonFly/Mir BSD
|
|
34 linux Linux
|
|
35 osx Mac OS X
|
|
36 osx-universal Mac OS X universal binaries (i386,x86_64 and ppc)
|
|
37 sun SunOS and Sun Pro compiler
|
|
38 sun-64bit SunOS and Sun Pro compiler for sparc64(? amd64)
|
|
39 sun-gcc SunOS and GCC compiler
|
|
40 sun-gcc-64bit SunOS and GCC compiler for sparc64 (? amd64)
|
|
41 ios61 iOS SDK 6.1 armv7 (untested!)
|
|
42 ios61-nothumb iOS SDK 6.1 armv7 -mno-thumb (untested!)
|
|
43
|
|
44 Tweaking the build:
|
|
45 -------------------
|
|
46 $ VAR1=<VALUE1> VAR2=<VALUE2> .. make -f Makefile.embedded <variant>
|
|
47
|
|
48 Adding a variant
|
|
49 -----------------
|
|
50 Currently we deal with two files to specify a custom target.
|
|
51
|
|
52 The top-level Makefile.embedded controls for building the libraries.
|
|
53 Useful variables are AR, CC, CFLAGS and ASFLAGS.
|
|
54
|
|
55 The test/Makefile.embedded file controls for building the tests.
|
|
56 The tests currently involve sometimes C++ and some platforms need
|
|
57 to link with the math library. Others need the dynamic linker.
|
|
58 Useful variables are CXX, CC, CCC (Sun), CFLAGS, CCFLAGS (Sun),
|
|
59 CXXFLAGS andLDFLAGS.
|
|
60
|
|
61 Background
|
|
62 ----------
|
|
63 During the preparation for the public release of the R package 'rdyncall' I was
|
|
64 looking for a way to get DynCall integrated into an existing Make system such
|
|
65 as offered by R for build R packages.
|
|
66
|
|
67 It was inspired by the make files of Lua which are damn simple and
|
|
68 don't need a configure but a user that knows the target platform name.
|
|
69
|
|
70 The source package can be configured automatically during compilation and
|
|
71 does not require explicit configuration anymore using "*.S" files that
|
|
72 are Assembly files which are preprocessed by the C Preprocessor.
|
|
73
|
|
74 This feature is available by GCC and SunPro compilers.
|
|
75
|
|
76 Limitations
|
|
77 -----------
|
|
78
|
|
79 Mac OS X universal static libraries require to use
|
|
80
|
|
81 'libtool -static -o libname.a obj1.o obj2.o ...' instead of 'ar cru libname.a obj1.o obj2.o'.
|
|
82 We use predefined variables AR and ARFLAGS.
|
|
83 The variant osx-universal uses AR=libtool.
|
|
84
|