summaryrefslogtreecommitdiff
path: root/Makerules
blob: 7f4dcefbf09a931de14e2978d7f2b8652767e709 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Configuration for the Makefile

OS ?= $(shell uname)
OS := $(OS:MINGW%=MINGW)

CFLAGS += -Wall

ifeq "$(build)" "debug"
CFLAGS += -pipe -g -DDEBUG
else ifeq "$(build)" "profile"
CFLAGS += -pipe -O2 -DNDEBUG -pg
LDFLAGS += -pg
else ifeq "$(build)" "release"
CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer
else ifeq "$(build)" "coverage"
CFLAGS += -pipe -g -DDEBUG -pg -fprofile-arcs -ftest-coverage
LIBS += -lgcov
else ifeq "$(build)" "native"
CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer -march=native -mfpmath=sse
else ifeq "$(build)" "memento"
CFLAGS += -pipe -g -DMEMENTO -DDEBUG
else
$(error unknown build setting: '$(build)')
endif

# Mac OS X doesn't have pkg-config so we hard code paths.
ifeq "$(OS)" "Darwin"
SYS_FREETYPE_CFLAGS = -I/usr/X11R6/include/freetype2
SYS_X11_CFLAGS = -I/usr/X11R6/include
SYS_X11_LIBS = -L/usr/X11R6/lib -lX11 -lXext
RANLIB_CMD = ranlib $@

# Other Unixes use pkg-config for system third party libs
else
SYS_FREETYPE_CFLAGS = $(shell pkg-config --cflags freetype2)
SYS_OPENJPEG_CFLAGS = $(shell pkg-config --cflags libopenjpeg)
SYS_X11_CFLAGS = $(shell pkg-config --cflags x11 xext)
SYS_X11_LIBS = $(shell pkg-config --libs x11 xext)
endif

# The following section is an example of how to simply do cross-compilation
# using these Makefiles. It builds for a beagleboard running ARM linux,
# compiling on windows with the CodeSourcery G++ compilers.
# Invoke this as:
#      make OS=beagle-cross build=release
# This does rely on the generated directory being populated with the cmap
# files etc first. Either:
#   1) do 'make generate' first (this relies on you having an appropriate host
#   base C compiler set up - such as you would have on unix or in windows
#   cygwin)
#   2) do a non cross compile build (e.g. windows in MSVC) first.
#   3) download the generated files from mupdf.com.

ifeq "$(OS)" "beagle-cross"
CC = arm-none-linux-gnueabi-gcc
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mfpu=neon -mcpu=cortex-a8 -mfloat-abi=softfp -ftree-vectorize -ffast-math -fsingle-precision-constant
CROSSCOMPILE=yes
NOX11=yes
endif

ifeq "$(OS)" "webos-pre-cross"
CC = arm-none-linux-gnueabi-gcc
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -ffast-math -fsingle-precision-constant
CROSSCOMPILE=yes
NOX11=yes
endif

ifeq "$(OS)" "webos-pixi-cross"
CC = arm-none-linux-gnueabi-gcc
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -ffast-math -fsingle-precision-constant
CROSSCOMPILE=yes
NOX11=yes
endif

ifeq "$(OS)" "w64_x86-cross-mingw32"
CC = i686-w64-mingw32-gcc
LD = i686-w64-mingw32-gcc
AR = i686-w64-mingw32-ar
CROSSCOMPILE=yes
NOX11=yes
endif

ifeq "$(OS)" "w64_amd64-cross-mingw32"
CC = x86_64-w64-mingw32-gcc
LD = x86_64-w64-mingw32-gcc
AR = x86_64-w64-mingw32-ar
CROSSCOMPILE=yes
NOX11=yes
endif

# Most variables when building for iOS are set up in ios/build_libs.sh,
# which is called from the Xcode project as a "Run Script" build step.
# The following section works for both device and simulator builds.

ifeq "$(OS)" "ios"
CC = $(PLATFORM_DEVELOPER_BIN_DIR)/gcc
AR = $(PLATFORM_DEVELOPER_BIN_DIR)/ar
RANLIB_CMD = $(PLATFORM_DEVELOPER_BIN_DIR)/ranlib $@
CROSSCOMPILE=yes
NOX11=yes
endif