annotate doc/README.embedded @ 357:d982a00c2177

- PPC64 asm syntax fix, specifying explicitly comparison mode for cmpi (newer toolchains complain, older ones took optional field of instruction which happened to be same value)
author Tassilo Philipp
date Tue, 25 Feb 2020 18:16:13 +0100
parents 3e629dc19168
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