summaryrefslogtreecommitdiff
path: root/frontends/kolibrios/Makefile
blob: 29c1b44654b760a1b28bab60cb4dc776f89d1f43 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
ENVDIR := $(PREFIX)
KOLIBRI_SVN_CHECKOUT := $(ENVDIR)/kolibrios
KOL_OBJ_DIR := $(ENVDIR)/obj

KOL_LIBC := $(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/newlib/libc/include/
KOL_LIB_DIR := $(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/lib
LIB_LDFLAGS := -L$(KOL_LIB_DIR) -L/opt/netsurf/kos32-gcc/cross/autobuild/tools/win32/lib -lfreetype
OS_LDFLAGS := -static -S -T$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/newlib/app-dynamic.lds --image-base 0 -Map netsurf-kolibrios.map
NS_INCLUDE := $(PREFIX)/include
NS_LIB_LDFLAGS := -L$(PREFIX)/lib/ -lnsbmp -lnsutils -lwapcaplet -lsvgtiny -lnsgif -lutf8proc -lcss -lnsfb -lparserutils -ldom -lhubbub
CFLAGS += -c -fno-ident -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 -U__BSD_VISIBLE -I$(KOL_LIBC) -I$(NS_INCLUDE)
LDFLAGS +=  $(OS_LDFLAGS) $(NS_LIB_LDFLAGS) $(LIB_LDFLAGS) -lz -lgcc -lc.dll

CWARNFLAGS += -Wno-error -Wno-redundant-decls -Wno-char-subscripts -Wno-undef -Wno-implicit-function-declaration -Wno-nested-externs -Wno-format-extra-args -Wno-format
DMACROS := -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -D_NETBSD_SOURCE -D_TARGET_IS_KOLIBRIOS -DKOLIBRI_USE_FREETYPE -DFB_USE_FREETYPE

KOL_OTHER_INCLUDES := -I$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/libpng/ -I$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/zlib -I$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/freetype/include -I$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/freetype/include -I$(KOLIBRI_SVN_CHECKOUT)/contrib/sdk/sources/libjpeg

CFLAGS += $(KOL_OTHER_INCLUDES) $(DMACROS) -std=c99  -g
CFLAGS += '-DNETSURF_USE_KOLIBRI_HTTPLIB'
##########################################################################
# Only for FB compat with kolibri. Get rid soon.
CFLAGS += '-DKOLIBRI_RUNTIME_RESPATH="$(NETSURF_KOLIBRI_RESPATH)"'

# compile time font locations
CFLAGS += '-DNETSURF_FB_FONTPATH="$(NETSURF_KOLIBRI_FONTPATH)"'
CFLAGS += '-DKOLIBRI_FONT_FREETYPE_SANS_SERIF="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SANS_SERIF="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SANS_SERIF_BOLD="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SANS_SERIF_ITALIC="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SERIF="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_SERIF_BOLD="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_MONOSPACE="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_MONOSPACE_BOLD="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_CURSIVE="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'
CFLAGS += '-DNETSURF_FB_FONT_FANTASY="$(NETSURF_KOLIBRI_FONT_SANS_SERIF)"'


#########################################################################

KOLIBRI_IMAGE_left_arrow := $(FRONTEND_SOURCE_DIR)/res/icons/back.png
KOLIBRI_IMAGE_right_arrow := $(FRONTEND_SOURCE_DIR)/res/icons/forward.png
KOLIBRI_IMAGE_reload := $(FRONTEND_SOURCE_DIR)/res/icons/reload.png
KOLIBRI_IMAGE_stop_image := $(FRONTEND_SOURCE_DIR)/res/icons/stop.png
KOLIBRI_IMAGE_history_image := $(FRONTEND_SOURCE_DIR)/res/icons/history.png
KOLIBRI_IMAGE_left_arrow_g := $(FRONTEND_SOURCE_DIR)/res/icons/back_g.png
KOLIBRI_IMAGE_right_arrow_g := $(FRONTEND_SOURCE_DIR)/res/icons/forward_g.png
KOLIBRI_IMAGE_reload_g := $(FRONTEND_SOURCE_DIR)/res/icons/reload_g.png
KOLIBRI_IMAGE_stop_image_g := $(FRONTEND_SOURCE_DIR)/res/icons/stop_g.png
KOLIBRI_IMAGE_history_image_g := $(FRONTEND_SOURCE_DIR)/res/icons/history_g.png
KOLIBRI_IMAGE_scrolll := $(FRONTEND_SOURCE_DIR)/res/icons/scrolll.png
KOLIBRI_IMAGE_scrollr := $(FRONTEND_SOURCE_DIR)/res/icons/scrollr.png
KOLIBRI_IMAGE_scrollu := $(FRONTEND_SOURCE_DIR)/res/icons/scrollu.png
KOLIBRI_IMAGE_scrolld := $(FRONTEND_SOURCE_DIR)/res/icons/scrolld.png
KOLIBRI_IMAGE_osk_image := $(FRONTEND_SOURCE_DIR)/res/icons/osk.png
KOLIBRI_IMAGE_pointer_image := $(FRONTEND_SOURCE_DIR)/res/pointers/default.png
KOLIBRI_IMAGE_hand_image := $(FRONTEND_SOURCE_DIR)/res/pointers/point.png
KOLIBRI_IMAGE_caret_image := $(FRONTEND_SOURCE_DIR)/res/pointers/caret.png
KOLIBRI_IMAGE_menu_image := $(FRONTEND_SOURCE_DIR)/res/pointers/menu.png
KOLIBRI_IMAGE_progress_image := $(FRONTEND_SOURCE_DIR)/res/pointers/progress.png
KOLIBRI_IMAGE_move_image := $(FRONTEND_SOURCE_DIR)/res/pointers/move.png
KOLIBRI_IMAGE_throbber0 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber0.png
KOLIBRI_IMAGE_throbber1 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber1.png
KOLIBRI_IMAGE_throbber2 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber2.png
KOLIBRI_IMAGE_throbber3 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber3.png
KOLIBRI_IMAGE_throbber4 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber4.png
KOLIBRI_IMAGE_throbber5 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber5.png
KOLIBRI_IMAGE_throbber6 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber6.png
KOLIBRI_IMAGE_throbber7 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber7.png
KOLIBRI_IMAGE_throbber8 := $(FRONTEND_SOURCE_DIR)/res/throbber/throbber8.png

# Host tool to convert image bitmaps to source code.
#
# convert_image depends on fb_bitmap.h so that if we change that
# header, we get new images built.

HOST_LDFLAGS += -lpng

$(TOOLROOT)/convert_image: $(TOOLROOT)/created $(FRONTEND_SOURCE_DIR)/fbsources/convert_image.c 
	$(VQ)echo " HOST CC: $@"
	$(Q)$(HOST_CC) $(HOST_CFLAGS) -o $@ $(FRONTEND_SOURCE_DIR)/fbsources/convert_image.c $(HOST_LDFLAGS)

# 1: input file
# 2: output file
# 3: bitmap name

define convert_image

S_IMAGES += $(2)

$(2): $(1) $(TOOLROOT)/convert_image 
	$(Q)$(TOOLROOT)/convert_image $(1) $(2) $(3)
endef

S_IMAGES :=
$(eval $(foreach V,$(filter KOLIBRI_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/image-$(patsubst KOLIBRI_IMAGE_%,%,$(V)).c,$(patsubst KOLIBRI_IMAGE_%,%,$(V)))))

# Internal fonts to generate
FB_FONT_internal_ns-sans := fonts/glyph_data

# Internal font conversion
$(TOOLROOT)/convert_font: $(TOOLROOT)/created $(FRONTEND_SOURCE_DIR)/fbsources/convert_font.c
	$(VQ)echo " HOST CC: $@"
	$(Q)$(HOST_CC) -o $@ $(FRONTEND_SOURCE_DIR)/fbsources/convert_font.c

# 1: input file
# 2: output source code file
# 3: output header file
# 4: font name
define convert_font

S_FONTS += $(2)
$(2): $(1) $(TOOLROOT)/convert_font
	$(VQ)echo "    FONT: $(1) ($(4))"
	$(Q)$(TOOLROOT)/convert_font -H $(3) $(1) $(2)

endef

S_FONTS :=

$(eval $(foreach V,$(filter KOLIBRI_FONT_$(NETSURF_KOLIBRI_FONTLIB)_%,$(.VARIABLES)),$(call convert_font,$(FRONTEND_RESOURCES_DIR)/$($(V)),$(OBJROOT)/font-$(patsubst KOLIBRI_FONT_$(NETSURF_KOLIBRI_FONTLIB)_%,%,$(V)).c,$(OBJROOT)/font-$(patsubst KOLIBRI_FONT_$(NETSURF_KOLIBRI_FONTLIB)_%,%,$(V)).h,$(patsubst KOLIBRI_FONT_$(NETSURF_KOLIBRI_FONTLIB)_%,%,$(V)))))

# non optional pkg-configed libs
#$(eval $(call pkg_config_find_and_add,libcurl,Curl ))
#$(eval $(call pkg_config_find_and_add,openssl,OpenSSL))
#$(eval $(call pkg_config_find_and_add,glib-2.0,GLib2))

# optional pkg-config configured libraries
# $(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG))
# $(eval $(call pkg_config_find_and_add_enabled,ROSPRITE,librosprite,Sprite))
# $(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP))
# $(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF))
# $(eval $(call pkg_config_find_and_add_enabled,JPEG,libnsjpeg,JPEG))
# $(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG  ))
# $(eval $(call pkg_config_find_and_add_enabled,MOZJS,mozjs185,JavaScript))
# $(eval $(call pkg_config_find_and_add_enabled,JS,mozilla-js,JavaScript))

#S_KOLIBRIOS := main.c kolibri_misc.c kolibri_debug.c kolibri_filesystem.c kolibri_regex.c
S_KOLIBRIOS := kolibri_http.c gui.c schedule.c
S_FRAMEBUFFER := framebuffer.c bitmap.c fetch.c findfile.c local_history.c corewindow.c clipboard.c font_$(NETSURF_KOLIBRI_FONTLIB).c
S_FRAMEBUFFER_FBTK := fbtk.c event.c fill.c bitmap.c user.c window.c text.c scroll.c osk.c

S_FRAMEBUFFER := $(addprefix fbsources/,$(S_FRAMEBUFFER))
S_FRAMEBUFFER += $(addprefix fbsources/fbtk/,$(S_FRAMEBUFFER_FBTK))
S_KOLIBRIOS += $(S_FRAMEBUFFER)
S_FRONTEND := $(S_KOLIBRIOS)

SOURCES =  $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_FRONTEND) $(S_IMAGES)

EXETARGET := nskolibrios

KOLOBJECTS = $(KOL_OBJ_DIR)/dirent.o $(KOL_OBJ_DIR)/iconv.o $(KOL_OBJ_DIR)/loadhttp.obj


## Install specific stuff

DESTDIR := $(PREFIX)/bin
DESTRESDIR := $(PREFIX)/bin/res
KOLIBRI_RES_DIR := $(HOME)/NETSURFLIBS/netsurf/frontends/kolibrios/res
RELEASENAME := 
# make install is buggy with -jN when it cannot find the EXETARGET as it tries to install it before it is created.
install-kolibrios:
	$(Q)$(MKDIR) -p $(DESTDIR)
	$(Q)install $(EXETARGET) $(DESTDIR)/netsurf-kolibrios
	$(Q)cp -r $(KOLIBRI_RES_DIR) $(DESTRESDIR)
	$(Q)cp netsurf-kolibrios.map $(DESTDIR)/