annotate doc/README.embedded @ 0:3e629dc19168

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