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

LDFLAGS += $(shell $(PKG_CONFIG) --libs libxml-2.0 libcurl libdom libcss)
LDFLAGS += $(shell $(PKG_CONFIG) --libs openssl)

# 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_WEBP_CFLAGS := -DWITH_WEBP
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,PNG,libpng,PNG  ))
$(eval $(call pkg_config_find_and_add,BMP,libnsbmp,BMP))
$(eval $(call pkg_config_find_and_add,GIF,libnsgif,GIF))
$(eval $(call pkg_config_find_and_add,RSVG,librsvg-2.0,SVG))
$(eval $(call pkg_config_find_and_add,NSSVG,libsvgtiny,SVG))
$(eval $(call pkg_config_find_and_add,ROSPRITE,librosprite,Sprite))
$(eval $(call feature_enabled,WEBP,-DWITH_WEBP,-lwebp,WebP (libwebp)))
$(eval $(call pkg_config_find_and_add,MOZJS,mozjs185,JavaScript))
$(eval $(call pkg_config_find_and_add,JS,mozilla-js,JavaScript))
$(eval $(call pkg_config_find_and_add,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_DISABLE_DEPRECATED \
		-DGTK_MULTIHEAD_SAFE \
		-DPANGO_DISABLE_DEPRECATED \
	       	-DGDK_PIXBUF_DISABLE_DEPRECATED

# libsexy currently means we cannot enable this
#		-DGDK_DISABLE_DEPRECATED 

GTKCFLAGS := -std=c99 -Dgtk -Dnsgtk \
		$(GTKDEPFLAGS) \
		-D_BSD_SOURCE \
		-D_XOPEN_SOURCE=600 \
		-D_POSIX_C_SOURCE=200112L \
		-D_NETBSD_SOURCE \
		-DGTK_RESPATH=\"$(NETSURF_GTK_RESOURCES)\" \
		$(WARNFLAGS) -I. -g \
		$(shell $(PKG_CONFIG) --cflags gtk+-$(NETSURF_GTK_MAJOR).0) \
		$(shell $(PKG_CONFIG) --cflags libhubbub libcurl) \
		$(shell $(PKG_CONFIG) --cflags openssl) \
		$(shell xml2-config --cflags)

GTKLDFLAGS := $(shell $(PKG_CONFIG) --cflags --libs gtk+-$(NETSURF_GTK_MAJOR).0 gthread-2.0 gmodule-2.0 lcms)

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

# ---------------------------------------------------------------------------
# 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 --struct --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 thumbnail.c plotters.c	\
	treeview.c scaffolding.c gdk.c completion.c login.c throbber.c	\
	selection.c history.c window.c filetype.c download.c menu.c	\
	print.c search.c tabs.c theme.c toolbar.c			\
	compat.c cookies.c hotlist.c system_colour.c			\
	$(addprefix dialogs/,options.c about.c source.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_PDF) $(S_PIXBUF) $(S_GTK)
EXETARGET := nsgtk

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

GTK_RESOURCES_LIST := adblock.css arrow_down_8x32.png ca-bundle.txt default.css \
			default.ico favicon.png gtkdefault.css internal.css \
			languages license netsurf.png netsurf.xpm \
			netsurf-16x16.xpm quirks.css themelist toolbarIndices \
			SearchEngines
GTK_RESOURCES_LIST := $(addprefix gtk/res/, $(GTK_RESOURCES_LIST)) \
			$(wildcard gtk/res/*.gtk*.ui)

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

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

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

package-gtk: