summaryrefslogtreecommitdiff
path: root/gtk/Makefile.target
blob: 0b2eaab9aad311ff749d8eb61a33ba723ff9a5ad (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
#
# Makefile for NetSurf GTK target
#
# This file is part of NetSurf 
#
# ----------------------------------------------------------------------------
# GTK flag setup (using pkg-config)
# ----------------------------------------------------------------------------

# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
NETSURF_FEATURE_RSVG_CFLAGS := -DWITH_RSVG
NETSURF_FEATURE_NSSVG_CFLAGS := -DWITH_NS_SVG
NETSURF_FEATURE_ROSPRITE_CFLAGS := -DWITH_NSSPRITE
NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP
NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF
NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG
NETSURF_FEATURE_JS_CFLAGS := -DWITH_JS -DJS_HAS_FILE_OBJECT=0
NETSURF_FEATURE_MOZJS_CFLAGS := -DWITH_MOZJS -DJS_HAS_FILE_OBJECT=0
NETSURF_FEATURE_VIDEO_CFLAGS := -DWITH_VIDEO

# add a line similar to below for each optional lib here
# note: webp lacks pkg-config file
$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG))
$(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,RSVG,librsvg-2.0,SVG))
$(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,MOZJS,mozjs185,JavaScript))
$(eval $(call pkg_config_find_and_add_enabled,JS,mozilla-js,JavaScript))
$(eval $(call pkg_config_find_and_add_enabled,VIDEO,gstreamer-0.10,Video))

# GTK and GLIB flags to disable depricated usage
GTKDEPFLAGS := -DG_DISABLE_SINGLE_INCLUDES \
		-DG_DISABLE_DEPRECATED \
	       	-DGTK_DISABLE_SINGLE_INCLUDES \
		-DGTK_MULTIHEAD_SAFE \
		-DPANGO_DISABLE_DEPRECATED

# later editions of gtk 2 deprecate interfaces we rely upon for cursors
# -DGDK_PIXBUF_DISABLE_DEPRECATED

# libsexy currently means we cannot enable this
#		-DGDK_DISABLE_DEPRECATED 

# gtk3 is depricating interfaces we use a lot
ifeq ($(NETSURF_GTK_MAJOR),2)
GTKDEPFLAGS += -DGTK_DISABLE_DEPRECATED
endif


GTKCFLAGS := -std=c99 -Dgtk -Dnsgtk -g \
		$(GTKDEPFLAGS) \
		-D_BSD_SOURCE \
		-D_DEFAULT_SOURCE \
		-D_XOPEN_SOURCE=600 \
		-D_POSIX_C_SOURCE=200809L \
		-D_NETBSD_SOURCE \
		-DGTK_RESPATH=\"$(NETSURF_GTK_RESOURCES)\"

# non optional pkg-configed libs
$(eval $(call pkg_config_find_and_add,openssl,OpenSSL))
$(eval $(call pkg_config_find_and_add,libcurl,Curl ))
$(eval $(call pkg_config_find_and_add,gtk+-$(NETSURF_GTK_MAJOR).0,GTK-$(NETSURF_GTK_MAJOR)))
$(eval $(call pkg_config_find_and_add,gthread-2.0,GThread2))
$(eval $(call pkg_config_find_and_add,gmodule-2.0,GModule2))

CFLAGS += $(GTKCFLAGS)
LDFLAGS += -lm

# ---------------------------------------------------------------------------
# Windows flag setup
# ---------------------------------------------------------------------------

ifeq ($(HOST),Windows_NT)
    CFLAGS += -U__STRICT_ANSI__
endif


# ----------------------------------------------------------------------------
# Pixbuf
# ----------------------------------------------------------------------------

GTK_IMAGE_menu_cursor := gtk/res/menu_cursor.png

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

S_PIXBUF += $(2)

$(2): $(1)
	$(Q)echo "#include <gdk-pixbuf/gdk-pixdata.h>" > $(2)
	$(Q)gdk-pixbuf-csource --extern --raw --name=$(3) $(1) >> $(2) || \
	( rm -f $(2) && false )

endef

# ----------------------------------------------------------------------------
# Source file setup
# ----------------------------------------------------------------------------

#converted pixbuf sources
S_PIXBUF :=

$(eval $(foreach V,$(filter GTK_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/$(patsubst GTK_IMAGE_%,%,$(V)).c,$(patsubst GTK_IMAGE_%,%,$(V))_pixdata)))

# S_GTK are sources purely for the GTK build
S_GTK := font_pango.c bitmap.c gui.c schedule.c plotters.c	\
	treeview.c scaffolding.c gdk.c completion.c login.c throbber.c	\
	selection.c history.c window.c fetch.c download.c menu.c	\
	print.c search.c tabs.c theme.c toolbar.c gettext.c		\
	compat.c cookies.c hotlist.c viewdata.c viewsource.c		\
	preferences.c about.c ssl_cert.c

S_GTK := $(addprefix gtk/,$(S_GTK)) $(addprefix utils/,container.c)
# code in utils/container.ch is non-universal it seems

# This is the final source build list
# Note this is deliberately *not* expanded here as common and image
#   are not yet available
SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_PIXBUF) $(S_GTK)

# The gtk binary target
EXETARGET := nsgtk

# The filter and target for split messages
MESSAGES_FILTER=gtk
MESSAGES_TARGET=gtk/res

# ----------------------------------------------------------------------------
# Install target
# ----------------------------------------------------------------------------

GTK_RESOURCES_LIST := \
	languages themelist SearchEngines toolbarIndices ca-bundle.txt \
	default.css adblock.css quirks.css internal.css gtkdefault.css \
	credits.html licence.html welcome.html maps.html Messages \
	default.ico favicon.png netsurf.png netsurf.xpm netsurf-16x16.xpm \
	arrow_down_8x32.png

GTK_RESOURCES_LIST := \
	$(addprefix gtk/res/, $(GTK_RESOURCES_LIST)) \
	$(wildcard gtk/res/*.gtk$(NETSURF_GTK_MAJOR).ui)

# translations with more than just Messages files
GTK_TRANSLATIONS_HTML := de en fr it ja nl

install-gtk:
	$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_BIN)
	$(Q)install nsgtk $(DESTDIR)$(NETSURF_GTK_BIN)netsurf
	$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_RESOURCES)icons
	$(Q)install -m 0644 gtk/res/icons/*.png $(DESTDIR)$(NETSURF_GTK_RESOURCES)/icons
	$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_RESOURCES)throbber
	$(Q)install -m 0644 gtk/res/throbber/*.png $(DESTDIR)$(NETSURF_GTK_RESOURCES)/throbber
	$(Q)tar -c -h -C gtk/res -f - themes | tar -xv -C $(DESTDIR)$(NETSURF_GTK_RESOURCES) -f -
	$(Q)tar -c -h -C gtk/res -f - $(GTK_TRANSLATIONS_HTML) | tar -xv -C $(DESTDIR)$(NETSURF_GTK_RESOURCES) -f -
	$(Q)install -m 0644 $(GTK_RESOURCES_LIST) $(DESTDIR)$(NETSURF_GTK_RESOURCES)

# ----------------------------------------------------------------------------
# Package target
# ----------------------------------------------------------------------------

package-gtk: