Subversion Repositories Kolibri OS

Rev

Rev 4364 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3584 sourcerer 1
# Component settings
2
COMPONENT := nsfb
3
COMPONENT_VERSION := 0.0.2
4
# Default to a static library
5
COMPONENT_TYPE ?= lib-static
6
 
7
# Setup the tooling
4821 ashmew2 8
#PREFIX ?= /opt/netsurf
9
PREFIX ?= /usr
3584 sourcerer 10
NSSHARED ?= $(PREFIX)/share/netsurf-buildsystem
11
include $(NSSHARED)/makefiles/Makefile.tools
12
 
13
# Reevaluate when used, as BUILDDIR won't be defined yet
14
TESTRUNNER = test/runtest.sh $(BUILDDIR) $(EXEEXT)
15
 
16
# Toolchain flags
17
WARNFLAGS := -Wall -Wextra -Wundef -Wpointer-arith -Wcast-align \
18
	-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
19
	-Wmissing-declarations -Wnested-externs -Werror -pedantic \
20
	-Wno-overlength-strings # For nsglobe.c
21
CFLAGS := -g -std=c99 -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112L \
22
	-I$(CURDIR)/include/ -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS)
23
 
24
NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom
25
 
26
$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver))
27
$(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl))
28
$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES)))
29
 
30
ifeq ($(NSFB_SDL_AVAILABLE),yes)
31
  $(eval $(call pkg_config_package_add_flags,sdl,CFLAGS))
32
  $(eval $(call pkg_config_package_add_flags,sdl,TESTCFLAGS,TESTLDFLAGS))
33
 
34
  REQUIRED_PKGS := $(REQUIRED_PKGS) sdl
35
endif
36
 
37
ifeq ($(NSFB_XCB_AVAILABLE),yes)
38
  # Size hint allocators were removed in xcb-icccm 0.3.0
39
  $(eval $(call pkg_config_package_min_version,NSFB_XCB_ICCCM_SIZE_HINTS,xcb-icccm,0.3.0))
40
  ifeq ($(NSFB_XCB_ICCCM_SIZE_HINTS),yes)
41
    CFLAGS := $(CFLAGS) -DNSFB_NEED_HINTS_ALLOC
42
  endif
43
 
44
  # xcb-icccm 0.3.8 introduced an additional "icccm_" in function names
45
  $(eval $(call pkg_config_package_min_version,NSFB_XCB_ICCCM_API_PREFIX,xcb-icccm,0.3.8))
46
  ifeq ($(NSFB_XCB_ICCCM_API_PREFIX),yes)
47
    CFLAGS := $(CFLAGS) -DNSFB_NEED_ICCCM_API_PREFIX
48
  endif
49
 
50
  # xcbproto 1.6 incorporated atoms previously found in xcb_atom
51
  # However, libxcb <1.3 did not report xcbproto versions. Assume xcbproto 1.5 in this case.
52
  $(eval $(call pkg_config_package_min_version,NSFB_HAVE_MODERN_XCB,xcb,1.3))
53
  ifeq ($(NSFB_HAVE_MODERN_XCB),yes)
54
    $(eval $(call pkg_config_get_variable,NSFB_XCBPROTO_VERSION,xcb,xcbproto_version))
55
    NSFB_XCBPROTO_MAJOR_VERSION := $(word 1,$(subst ., ,$(NSFB_XCBPROTO_VERSION)))
56
    NSFB_XCBPROTO_MINOR_VERSION := $(word 2,$(subst ., ,$(NSFB_XCBPROTO_VERSION)))
57
    CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MAJOR_VERSION=$(NSFB_XCBPROTO_MAJOR_VERSION)
58
    CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MINOR_VERSION=$(NSFB_XCBPROTO_MINOR_VERSION)
59
  else
60
    CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MAJOR_VERSION=1
61
    CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MINOR_VERSION=5
62
  endif
63
 
64
  $(eval $(call pkg_config_package_add_flags,$(NSFB_XCB_PKG_NAMES),CFLAGS))
65
  $(eval $(call pkg_config_package_add_flags,$(NSFB_XCB_PKG_NAMES),TESTCFLAGS,TESTLDFLAGS))
66
 
67
  REQUIRED_PKGS := $(REQUIRED_PKGS) $(NSFB_XCB_PKG_NAMES)
68
 
69
  $(eval $(call pkg_config_package_available,NSFB_XCB_UTIL_AVAILABLE,xcb-util))
70
  ifeq ($(NSFB_XCB_UTIL_AVAILABLE),yes)
71
    REQUIRED_PKGS := $(REQUIRED_PKGS) xcb-util
72
  endif
73
endif
74
 
75
ifeq ($(NSFB_VNC_AVAILABLE),yes)
76
  $(eval $(call pkg_config_package_add_flags,libvncserver,CFLAGS))
77
  $(eval $(call pkg_config_package_add_flags,libvncserver,TESTCFLAGS,TESTLDFLAGS))
78
 
79
  REQUIRED_PKGS := $(REQUIRED_PKGS) libvncserver
80
endif
81
 
82
TESTLDFLAGS := -lm -Wl,--whole-archive -l$(COMPONENT) -Wl,--no-whole-archive $(TESTLDFLAGS)
83
 
84
include $(NSBUILD)/Makefile.top
85
 
86
# Extra installation rules
87
I := /include
88
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libnsfb.h
89
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libnsfb_plot.h
90
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libnsfb_plot_util.h
91
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libnsfb_event.h
92
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libnsfb_cursor.h
93
INSTALL_ITEMS := $(INSTALL_ITEMS) /lib/pkgconfig:lib$(COMPONENT).pc.in
94
INSTALL_ITEMS := $(INSTALL_ITEMS) /lib:$(OUTPUT)