1#******************************************************************************* 2# Copyright (c) 2000, 2017 IBM Corporation and others. 3# 4# This program and the accompanying materials 5# are made available under the terms of the Eclipse Public License 2.0 6# which accompanies this distribution, and is available at 7# https://www.eclipse.org/legal/epl-2.0/ 8# 9# SPDX-License-Identifier: EPL-2.0 10# 11# Contributors: 12# IBM Corporation - initial API and implementation 13# Rolf Theunissen - SWT/GTK port on Windows 14#******************************************************************************* 15 16# Makefile for creating SWT libraries for win32 GTK 17 18# rewrite backslashes to slashes in paths 19JAVA_HOME := $(subst \,/,$(JAVA_HOME)) 20OUTPUT_DIR := $(subst \,/,$(OUTPUT_DIR)) 21 22#SWT_LIB_DEBUG=1 # to debug glue code in /bundles/org.eclipse.swt/bin/library. E.g os_custom.c:swt_fixed_forall(..) 23# Can be set via environment like: export SWT_LIB_DEBUG=1 24ifdef SWT_LIB_DEBUG 25SWT_DEBUG = -O0 -g3 -ggdb3 26NO_STRIP=1 27endif 28 29include make_common.mak 30 31SWT_VERSION=$(maj_ver)$(min_ver)r$(rev) 32GTK_VERSION?=2.0 33 34# Define the various shared libraries to be build. 35WS_PREFIX = gtk 36SWT_PREFIX = swt 37AWT_PREFIX = swt-awt 38ifeq ($(GTK_VERSION), 3.0) 39SWTPI_PREFIX = swt-pi3 40else 41SWTPI_PREFIX = swt-pi 42endif 43CAIRO_PREFIX = swt-cairo 44ATK_PREFIX = swt-atk 45# WEBKIT_PREFIX = swt-webkit 46 47SWT_LIB = $(SWT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 48AWT_LIB = $(AWT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 49SWTPI_LIB = $(SWTPI_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 50CAIRO_LIB = $(CAIRO_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 51ATK_LIB = $(ATK_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 52# WEBKIT_LIB = $(WEBKIT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll 53 54CAIROCFLAGS = `pkg-config --cflags cairo` 55CAIROLIBS = `pkg-config --libs cairo` 56 57GTKCFLAGS = `pkg-config --cflags gtk+-$(GTK_VERSION)` 58ifeq ($(GTK_VERSION), 3.0) 59GTKLIBS = `pkg-config --libs gtk+-$(GTK_VERSION) gthread-2.0` $(XLIB64) 60else 61GTKLIBS = `pkg-config --libs gtk+-$(GTK_VERSION) gthread-2.0` $(XLIB64) 62endif 63 64AWT_LFLAGS = -shared ${SWT_LFLAGS} 65AWT_LIBS = -L$(AWT_LIB_PATH) -ljawt 66 67ATKCFLAGS = `pkg-config --cflags atk gtk+-$(GTK_VERSION)` 68ATKLIBS = `pkg-config --libs atk` 69 70# Uncomment for Native Stats tool 71#NATIVE_STATS = -DNATIVE_STATS 72 73# WEBKITLIBS = `pkg-config --libs-only-l gio-2.0` 74# WEBKITCFLAGS = `pkg-config --cflags gio-2.0` 75# ifdef SWT_WEBKIT_DEBUG 76# # don't use 'webkit2gtk-4.0' in production, as some systems might not have those libs and we get crashes. 77# WEBKITLIBS += `pkg-config --libs-only-l webkit2gtk-4.0` 78# WEBKITCFLAGS += `pkg-config --cflags webkit2gtk-4.0` 79# endif 80 81 82SWT_OBJECTS = swt.o c.o c_stats.o callback.o 83AWT_OBJECTS = swt_awt.o 84SWTPI_OBJECTS = swt.o os.o os_structs.o os_custom.o os_stats.o 85CAIRO_OBJECTS = swt.o cairo.o cairo_structs.o cairo_stats.o 86ATK_OBJECTS = swt.o atk.o atk_structs.o atk_custom.o atk_stats.o 87# WEBKIT_OBJECTS = swt.o webkitgtk.o webkitgtk_structs.o webkitgtk_stats.o webkitgtk_custom.o 88 89CFLAGS = -O -Wall \ 90 -DSWT_VERSION=$(SWT_VERSION) \ 91 $(NATIVE_STATS) \ 92 $(SWT_DEBUG) \ 93 -DWIN32 -DGTK \ 94 -I$(JAVA_HOME)/include \ 95 -I$(JAVA_HOME)/include/win32 \ 96 -fPIC \ 97 ${SWT_PTR_CFLAGS} 98LFLAGS = -shared -fPIC ${SWT_LFLAGS} 99 100ifndef NO_STRIP 101 AWT_LFLAGS := $(AWT_LFLAGS) -s 102 LFLAGS := $(LFLAGS) -s 103endif 104 105all: make_swt make_atk 106 107# 108# SWT libs 109# 110make_swt: $(SWT_LIB) $(SWTPI_LIB) 111 112$(SWT_LIB): $(SWT_OBJECTS) 113 $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS) 114 115callback.o: callback.c callback.h 116 $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c 117 118$(SWTPI_LIB): $(SWTPI_OBJECTS) 119 $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS) 120 121swt.o: swt.c swt.h 122 $(CC) $(CFLAGS) -c swt.c 123os.o: os.c os.h swt.h os_custom.h 124 $(CC) $(CFLAGS) $(GTKCFLAGS) -c os.c 125os_structs.o: os_structs.c os_structs.h os.h swt.h 126 $(CC) $(CFLAGS) $(GTKCFLAGS) -c os_structs.c 127os_custom.o: os_custom.c os_structs.h os.h swt.h 128 $(CC) $(CFLAGS) $(GTKCFLAGS) -c os_custom.c 129os_stats.o: os_stats.c os_structs.h os.h os_stats.h swt.h 130 $(CC) $(CFLAGS) $(GTKCFLAGS) -c os_stats.c 131 132# 133# CAIRO libs 134# 135make_cairo: $(CAIRO_LIB) 136 137$(CAIRO_LIB): $(CAIRO_OBJECTS) 138 $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS) 139 140cairo.o: cairo.c cairo.h swt.h 141 $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c 142cairo_structs.o: cairo_structs.c cairo_structs.h cairo.h swt.h 143 $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo_structs.c 144cairo_stats.o: cairo_stats.c cairo_structs.h cairo.h cairo_stats.h swt.h 145 $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo_stats.c 146 147# 148# AWT lib 149# 150# make_awt:$(AWT_LIB) # TODO [win32] solve gtk/x11 vs gtk/win32 native integration 151make_awt: 152 153$(AWT_LIB): $(AWT_OBJECTS) 154 $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS) 155 156# 157# Atk lib 158# 159make_atk: $(ATK_LIB) 160 161$(ATK_LIB): $(ATK_OBJECTS) 162 $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS) 163 164atk.o: atk.c atk.h 165 $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c 166atk_structs.o: atk_structs.c atk_structs.h atk.h 167 $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk_structs.c 168atk_custom.o: atk_custom.c atk_structs.h atk.h 169 $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk_custom.c 170atk_stats.o: atk_stats.c atk_structs.h atk_stats.h atk.h 171 $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk_stats.c 172 173# TODO check availability webkitgtk on win32 174# # 175# # WebKit lib 176# # 177# make_webkit: $(WEBKIT_LIB) 178# 179# $(WEBKIT_LIB): $(WEBKIT_OBJECTS) 180# $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) $(WEBKITLIBS) 181# 182# webkitgtk.o: webkitgtk.c webkitgtk_custom.h 183# $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c 184# 185# webkitgtk_structs.o: webkitgtk_structs.c 186# $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk_structs.c 187# 188# webkitgtk_stats.o: webkitgtk_stats.c webkitgtk_stats.h 189# $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk_stats.c 190# 191# webkitgtk_custom.o: webkitgtk_custom.c 192# $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk_custom.c 193 194# 195# Install 196# 197install: all 198 cp *.dll $(OUTPUT_DIR) 199 200# 201# Clean 202# 203clean: 204 rm -f *.o *.dll 205