1#******************************************************************************
2# Copyright (c) 2007, 2009 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#*******************************************************************************
14
15# Makefile for creating the eclipse launcher program.
16
17# This makefile expects the following environment variables set:
18#
19# PROGRAM_OUTPUT  - the filename of the output executable
20# PROGRAM_LIBRARY - the filename of the output dll library
21# DEFAULT_OS      - the default value of the "-os" switch
22# DEFAULT_OS_ARCH - the default value of the "-arch" switch
23# DEFAULT_WS      - the default value of the "-ws" switch
24# JAVA_HOME       - the location of the Java for JNI includes
25NODEBUG=1
26
27APPVER=4.0
28_WIN32_WINNT=0x0400
29_WIN32_IE=0x0300
30
31!include <ntwin32.mak>
32!include <..\make_version.mak>
33
34PROGRAM_OUTPUT=eclipse.exe
35# Separate filename from extention
36PROGRAM_NAME=$(PROGRAM_OUTPUT:.exe=)
37
38PROGRAM_LIBRARY = eclipse_$(LIB_VERSION).dll
39
40# Define the object modules to be compiled and flags.
41MAIN_OBJS = eclipseMain.obj
42COMMON_OBJS = eclipseConfig.obj eclipseCommon.obj   eclipseWinCommon.obj
43DLL_OBJS	= eclipse.obj  eclipseWin.obj  eclipseUtil.obj  eclipseJNI.obj eclipseShm.obj
44
45LIBS   = kernel32.lib user32.lib comctl32.lib libcmt.lib
46DLL_LIBS = kernel32.lib user32.lib comctl32.lib gdi32.lib Advapi32.lib libcmt.lib version.lib
47LFLAGS = /DYNAMICBASE /NXCOMPAT /HIGHENTROPYVA /NODEFAULTLIB /INCREMENTAL:NO /RELEASE /NOLOGO -subsystem:windows -entry:wmainCRTStartup
48CONSOLEFLAGS = /DYNAMICBASE /NXCOMPAT /HIGHENTROPYVA /NODEFAULTLIB /INCREMENTAL:NO /RELEASE /NOLOGO -subsystem:console -entry:wmainCRTStartup
49#DLL_LFLAGS = /NODEFAULTLIB /INCREMENTAL:NO /PDB:NONE /RELEASE /NOLOGO -entry:_DllMainCRTStartup@12 -dll /BASE:0x72000000 /DLL
50DLL_LFLAGS = /DYNAMICBASE /NXCOMPAT /HIGHENTROPYVA /NODEFAULTLIB /INCREMENTAL:NO /PDB:NONE /RELEASE /NOLOGO  -dll /BASE:0x140000000 /DLL
51RES	= $(PROGRAM_NAME).res
52EXEC	= $(PROGRAM_OUTPUT)
53CONSOLE = $(PROGRAM_NAME)c.exe
54DLL    = $(PROGRAM_LIBRARY)
55DEBUG  = #$(cdebug)
56wcflags = -DUNICODE -I.. -DDEFAULT_OS="\"$(DEFAULT_OS)\"" \
57	-DDEFAULT_OS_ARCH="\"$(DEFAULT_OS_ARCH)\"" \
58	-DDEFAULT_WS="\"$(DEFAULT_WS)\"" \
59	-I$(JAVA_HOME)\include -I$(JAVA_HOME)\include\win32 \
60	$(cflags)
61all: $(EXEC) $(DLL) $(CONSOLE)
62
63eclipseMain.obj: ../eclipseUnicode.h ../eclipseCommon.h ../eclipseMain.c
64	$(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseMain.c
65
66eclipseCommon.obj: ../eclipseCommon.h ../eclipseUnicode.h ../eclipseCommon.c
67	$(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseCommon.c
68
69eclipse.obj: ../eclipseOS.h ../eclipseUnicode.h ../eclipse.c
70    $(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipse.c
71
72eclipseUtil.obj: ../eclipseUtil.h ../eclipseUnicode.h ../eclipseUtil.c
73    $(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseUtil.c
74
75eclipseConfig.obj: ../eclipseConfig.h ../eclipseUnicode.h ../eclipseConfig.c
76    $(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseConfig.c
77
78eclipseWin.obj: ../eclipseOS.h ../eclipseUnicode.h eclipseWin.c
79    $(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj eclipseWin.c
80
81eclipseWinCommon.obj: ../eclipseCommon.h eclipseWinCommon.c
82    $(cc) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj eclipseWinCommon.c
83
84eclipseJNI.obj: ../eclipseCommon.h ../eclipseOS.h ../eclipseJNI.c
85	$(CC) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseJNI.c
86
87eclipseShm.obj: ../eclipseShm.h ../eclipseUnicode.h ../eclipseShm.c
88	$(CC) $(DEBUG) $(wcflags) $(cvarsmt) /Fo$*.obj ../eclipseShm.c
89
90$(EXEC): $(MAIN_OBJS) $(COMMON_OBJS) $(RES)
91    $(link) $(LFLAGS) -out:$(PROGRAM_OUTPUT) $(MAIN_OBJS) $(COMMON_OBJS) $(RES) $(LIBS)
92
93#the console version needs a flag set, should look for a better way to do this
94$(CONSOLE): $(MAIN_OBJS) $(COMMON_OBJS)
95	del -f eclipseConfig.obj aeclipseConfig.obj
96	$(cc) $(DEBUG) $(wcflags) $(cvarsmt) -D_WIN32_CONSOLE /FoeclipseConfig.obj ../eclipseConfig.c
97    $(link) $(CONSOLEFLAGS) -out:$(CONSOLE) $(MAIN_OBJS) $(COMMON_OBJS) $(LIBS)
98
99$(DLL): $(DLL_OBJS) $(COMMON_OBJS)
100    $(link) $(DLL_LFLAGS) -out:$(PROGRAM_LIBRARY) $(DLL_OBJS) $(COMMON_OBJS) $(DLL_LIBS)
101
102$(RES): $(PROGRAM_NAME).rc
103    $(rc) -r -fo $(RES) eclipse.rc
104
105install: all
106	copy $(EXEC) $(OUTPUT_DIR)
107	del -f $(EXEC) $(MAIN_OBJS) $(DLL_OBJS) $(COMMON_OBJS) $(RES)
108
109clean:
110	del $(EXEC) $(DLL) $(MAIN_OBJS) $(DLL_OBJS) $(COMMON_OBJS) $(RES)
111