blob: 9feb80eab0185486fa4ce24c180224baba738d42 [file] [log] [blame]
#*******************************************************************************
# Copyright (c) 2000, 2009 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial API and implementation
# Kevin Cornell (Rational Software Corporation)
# Silenio Quarti (IBM)
# Sam Robb (TimeSys Corporation)
#*******************************************************************************
include ../make_version.mak
# Makefile for creating the eclipse launcher program.
# This makefile expects the following environment variables set:
#
# PROGRAM_OUTPUT - the filename of the output executable
# PROGRAM_LIBRARY - the file of the output shared library
# DEFAULT_OS - the default value of the "-os" switch
# DEFAULT_OS_ARCH - the default value of the "-arch" switch
# DEFAULT_WS - the default value of the "-ws" switch
#if PROGRAM_OUTPUT is not set, assume eclipse.exe
ifeq ($(PROGRAM_OUTPUT),)
PROGRAM_OUTPUT=eclipse.exe
endif
# Separate filename from extention
PROGRAM_NAME=$(PROGRAM_OUTPUT:.exe=)
PROGRAM_LIBRARY=eclipse_$(LIB_VERSION).dll
# Allow for cross-compiling under linux
OSTYPE ?= $(shell if uname -s | grep -iq cygwin ; then echo cygwin; else echo linux; fi)
ifeq ($(OSTYPE),cygwin)
CCVER = i686
CC = i686-pc-cygwin-gcc-3
RC = windres
else
CCVER = i586
CC = $(shell which i586-pc-cygwin-gcc)
TDIR = $(dir $(shell test -L $(CC) && readlink $(CC) || echo $(CC)))
RC = $(TDIR)/i586-pc-cygwin-windres
SYSINC = -isystem $(TDIR)/../include/mingw
endif
ifeq ($(CC),)
$(error Unable to find $(CCVER)-pc-cygwin-gcc)
endif
# Define the object modules to be compiled and flags.
MAIN_OBJS = eclipseMain.o
COMMON_OBJS = eclipseConfig.o eclipseCommon.o eclipseWinCommon.o
DLL_OBJS = eclipse.o eclipseWin.o eclipseUtil.o eclipseJNI.o eclipseShm.o
LIBS = -lkernel32 -luser32 -lgdi32 -lcomctl32 -lmsvcrt -lversion
LDFLAGS = -mwindows -mno-cygwin
CONSOLEFLAGS = -mconsole -mno-cygwin
DLL_LDFLAGS = -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--kill-at,--image-base=0x72000000
RES = $(PROGRAM_NAME).res
CONSOLE = $(PROGRAM_NAME)c.exe
EXEC = $(PROGRAM_OUTPUT)
DLL = $(PROGRAM_LIBRARY)
DEBUG = $(CDEBUG)
CFLAGS = -g -s -Wall \
-I. -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/win32 $(SYSINC) \
-D_WIN32 \
-DWIN32_LEAN_AND_MEAN \
-mno-cygwin -D__int64="long long"
WCFLAGS = -DUNICODE -I.. -DDEFAULT_OS="\"$(DEFAULT_OS)\"" \
-DDEFAULT_OS_ARCH="\"$(DEFAULT_OS_ARCH)\"" \
-DDEFAULT_WS="\"$(DEFAULT_WS)\"" \
$(DEBUG) $(CFLAGS)
all: $(EXEC) $(DLL) $(CONSOLE)
eclipseMain.o: ../eclipseUnicode.h ../eclipseCommon.h ../eclipseMain.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseMain.c
eclipseCommon.o: ../eclipseCommon.h ../eclipseUnicode.h ../eclipseCommon.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseCommon.c
eclipseWinCommon.o: ../eclipseCommon.h eclipseWinCommon.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ eclipseWinCommon.c
eclipse.o: ../eclipseOS.h ../eclipseUnicode.h ../eclipseJNI.h ../eclipseCommon.h ../eclipse.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipse.c
eclipseUtil.o: ../eclipseUtil.h ../eclipseUnicode.h ../eclipseUtil.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseUtil.c
eclipseConfig.o: ../eclipseConfig.h ../eclipseUnicode.h ../eclipseConfig.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseConfig.c
eclipseWin.o: ../eclipseOS.h ../eclipseUnicode.h eclipseWin.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ eclipseWin.c
eclipseJNI.o: ../eclipseUnicode.h ../eclipseJNI.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseJNI.c
eclipseShm.o: ../eclipseShm.h ../eclipseUnicode.h ../eclipseShm.c
$(CC) $(DEBUG) $(WCFLAGS) -c -o $@ ../eclipseShm.c
$(RES): $(PROGRAM_NAME).rc
$(RC) --output-format=coff --include-dir=.. -o $@ $<
$(EXEC): $(MAIN_OBJS) $(COMMON_OBJS) $(RES)
$(CC) $(LDFLAGS) -o $(EXEC) $(MAIN_OBJS) $(COMMON_OBJS) $(RES) $(LIBS)
#the console version needs a flag set, should look for a better way to do this
$(CONSOLE): $(MAIN_OBJS) $(COMMON_OBJS)
rm -f eclipseConfig.o aeclipseConfig.o
$(CC) $(DEBUG) $(WCFLAGS) -D_WIN32_CONSOLE -c -o eclipseConfig.o ../eclipseConfig.c
$(CC) $(CONSOLEFLAGS) -o $(CONSOLE) $(MAIN_OBJS) $(COMMON_OBJS) $(LIBS)
$(DLL): $(DLL_OBJS) $(COMMON_OBJS)
$(CC) $(DLL_LDFLAGS) -o $(DLL) $(DLL_OBJS) $(COMMON_OBJS) $(LIBS)
install: all
cp $(EXEC) $(DLL) $(CONSOLE) $(OUTPUT_DIR)
rm -f $(EXEC) $(DLL_OBJS) $(COMMON_OBJS) $(MAIN_OBJS) $(RES) $(CONSOLE)
clean:
$(RM) $(EXEC) $(DLL) $(DLL_OBJS) $(COMMON_OBJS) $(MAIN_OBJS) $(RES) $(CONSOLE)