Subversion Repositories Kolibri OS

Rev

Rev 3584 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

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