1#
2# %CopyrightBegin%
3#
4# Copyright Ericsson AB 2008-2016. All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10#     http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18# %CopyrightEnd%
19#
20
21include ../vsn.mk
22include ../config.mk
23
24# Darwin os have debug default install of wxWidgets
25FORCED_DEBUG = @FORCED_DEBUG_BUILD@
26ifeq ($(FORCED_DEBUG),debug)
27override TYPE=debug
28endif
29
30ifneq ($(TYPE),debug)
31override TYPE=opt
32endif
33
34SO_EXT    = @SO_EXT@
35OBJC_CC=@OBJC_CC@
36OBJC_CFLAGS=@OBJC_CFLAGS@
37
38GENERAL     = wxe_nif wxe_ps_init wxe_main wxe_impl \
39		wxe_helpers wxe_callback_impl wxe_return wxe_gl
40GENERAL_H   = wxe_callback_impl.h  wxe_events.h  wxe_gl.h \
41		wxe_helpers.h  wxe_impl.h  wxe_memory.h  wxe_return.h
42
43GENERATED_F = wxe_wrapper_1 wxe_wrapper_2 wxe_wrapper_3 wxe_wrapper_4 \
44	wxe_wrapper_5 wxe_wrapper_6 wxe_wrapper_7 wxe_wrapper_8 \
45	wxe_events wxe_init wxe_func_table
46GENERATED_H = gen/wxe_macros.h
47
48GL_H = egl_impl.h gen/gl_finit.h gen/gl_fdefs.h
49
50HAVE_OPENGL = true
51OPENGL_F = gl_nif glu_nif egl_impl
52
53include $(ERL_TOP)/make/target.mk
54include $(ERL_TOP)/make/output.mk
55include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
56
57ERL_INCS= $(DED_INCLUDES)
58
59SYS_TYPE    = @WXERL_SYS_TYPE@
60
61GENERAL_O   = $(GENERAL:%=$(SYS_TYPE)/%.o)
62GENERATED_O = $(GENERATED_F:%=$(SYS_TYPE)/%.o)
63ifeq ($(HAVE_OPENGL), true)
64	GL_OBJECTS = $(OPENGL_F:%=$(SYS_TYPE)/%.o)
65else
66	GL_OBJECTS =
67endif
68
69TARGET_DIR = ../priv/$(SYS_TYPE)
70
71RC_FILE_EXT = @RC_FILE_TYPE@
72ifeq ($(SYS_TYPE),win32)
73	RC_FILE     = $(SYS_TYPE)/wxe_win32.$(RC_FILE_EXT)
74	WEBVIEW_LOADER_DLL_ORIG = @WX_WEBVIEW_DLL@
75else
76	RC_FILE     =
77	WEBVIEW_LOADER_DLL_ORIG =
78endif
79
80ifneq ($(WEBVIEW_LOADER_DLL_ORIG),)
81	WEBVIEW_LOADER_DLL_DEST = ../priv/WebView2Loader.dll
82endif
83
84WX_OBJECTS  =  $(GENERATED_O) $(GENERAL_O) $(RC_FILE)
85
86OBJECTS = $(WX_OBJECTS) $(GL_OBJECTS)
87
88# -O2 -funroll-loops  -ffast-math -fomit-frame-pointer
89
90COMMON_CFLAGS = @DEFS@ $(ERL_INCS)
91
92CC		= @CC@
93CXX		= @CXX@
94LD		= $(CXX)
95LDFLAGS		= @LDFLAGS@
96RESCOMP		= @WX_RESCOMP@
97
98ifeq (@WX_HAVE_STATIC_LIBS@,true)
99OPT_WX_LIBS      =  @WX_LIBS_STATIC@
100DEBUG_WX_LIBS    =  @DEBUG_WX_LIBS_STATIC@
101else
102OPT_WX_LIBS      =  @WX_LIBS@
103DEBUG_WX_LIBS    =  @DEBUG_WX_LIBS@
104endif
105
106ifeq ($(TYPE),debug)
107WX_CFLAGS	= @DEBUG_WX_CFLAGS@
108CFLAGS          = @DEBUG_CFLAGS@
109WX_CXX_FLAGS	= @DEBUG_WX_CXXFLAGS@
110CXX_FLAGS       = @DEBUG_CXXFLAGS@
111CXX_NO_OPT_FLAGS = @DEBUG_CXXFLAGS@
112WX_LIBS		= $(DEBUG_WX_LIBS)
113else
114WX_CFLAGS	= @WX_CFLAGS@
115CFLAGS          = @CFLAGS@
116WX_CXX_FLAGS	= @WX_CXXFLAGS@
117CXX_FLAGS       = @CXXFLAGS@
118CXX_NO_OPT_FLAGS = @CXXNOOPTFLAGS@
119WX_LIBS		= $(OPT_WX_LIBS)
120endif
121
122GL_LIBS         = @GL_LIBS@
123
124CC_O		= $(V_CC) -c $(CFLAGS) $(WX_CFLAGS) $(COMMON_CFLAGS)
125OBJC_CC_O	= $(OBJC_CC) -c $(CFLAGS) $(OBJC_CFLAGS) $(WX_CFLAGS) $(COMMON_CFLAGS)
126CXX_O		= $(V_CXX) -c $(CXX_FLAGS) $(WX_CXX_FLAGS)  $(COMMON_CFLAGS)
127CXX_O_NO_OPT    = $(V_CXX) -c $(CXX_NO_OPT_FLAGS) $(WX_CXX_FLAGS)  $(COMMON_CFLAGS)
128
129# Targets
130
131opt:     $(TARGET_DIR)/wxe_driver$(SO_EXT) $(TARGET_DIR)/erl_gl$(SO_EXT) $(WEBVIEW_LOADER_DLL_DEST)
132
133debug:
134	@${MAKE} TYPE=debug
135
136clean:
137	rm -f $(OBJECTS)
138	rm -f $(TARGET_DIR)/*$(SO_EXT)
139	rm -f *~ erl_crash.dump
140
141complete_clean:
142	rm -f $(OBJECTS)
143	rm -f $(GENERATED_F:%=gen/%.cpp)
144	rm -f gen/gl_funcs.cpp
145	rm -f $(GENERATED_H)
146	rm -f ../priv/*/*
147	rm -f *~ erl_crash.dump
148	rm -f Makefile
149
150docs:
151
152$(GL_OBJECTS): $(GL_H)
153$(WX_OBJECTS): $(GENERATED_H) $(GENERAL_H)
154
155$(SYS_TYPE)/%.o: %.cpp
156	$(V_at)mkdir -p $(SYS_TYPE)
157	$(CXX_O) $< -o $@
158
159$(SYS_TYPE)/%.o: %.c
160	$(V_at)mkdir -p $(SYS_TYPE)
161	$(CC_O) $< -o $@
162
163$(SYS_TYPE)/wxe_ps_init.o: wxe_ps_init.c
164	$(V_at)mkdir -p $(SYS_TYPE)
165	$(cc_verbose)$(OBJC_CC_O) $< -o $@
166
167$(SYS_TYPE)/%.o: gen/%.cpp
168	$(V_at)mkdir -p $(SYS_TYPE)
169	$(CXX_O_NO_OPT) $< -o $@
170
171$(SYS_TYPE)/%.o: gen/%.c
172	$(V_at)mkdir -p $(SYS_TYPE)
173	$(CC_O) $< -o $@
174
175$(SYS_TYPE)/wxe_win32.$(RC_FILE_EXT): wxe_win32.rc
176	$(V_at)mkdir -p $(SYS_TYPE)
177	$(RESCOMP) -o $@ $<
178
179$(TARGET_DIR)/wxe_driver$(SO_EXT): $(WX_OBJECTS)
180	$(V_at)mkdir -p $(TARGET_DIR)
181	$(V_LD) $(LDFLAGS) $(WX_OBJECTS) $(WX_LIBS) -o $@
182
183$(TARGET_DIR)/erl_gl$(SO_EXT): $(GL_OBJECTS)
184	$(V_at)mkdir -p $(TARGET_DIR)
185	$(V_CC) $(LDFLAGS) $(GL_OBJECTS) $(GL_LIBS) -o $@
186
187$(WEBVIEW_LOADER_DLL_DEST): $(WEBVIEW_LOADER_DLL_ORIG)
188	$(INSTALL_PROGRAM) $< $@
189
190# ----------------------------------------------------
191# Release Target
192# ----------------------------------------------------
193include $(ERL_TOP)/make/otp_release_targets.mk
194release_spec: opt
195	$(INSTALL_DIR) "$(RELSYSDIR)/priv"
196	$(INSTALL_DATA) ../priv/erlang-logo32.png "$(RELSYSDIR)/priv/"
197	$(INSTALL_DATA) ../priv/erlang-logo64.png "$(RELSYSDIR)/priv/"
198	$(INSTALL_DATA) ../priv/erlang-logo128.png "$(RELSYSDIR)/priv/"
199	$(INSTALL_PROGRAM) $(TARGET_DIR)/wxe_driver$(SO_EXT) "$(RELSYSDIR)/priv/"
200	$(INSTALL_PROGRAM) $(TARGET_DIR)/erl_gl$(SO_EXT) "$(RELSYSDIR)/priv/"
201ifneq ($(WEBVIEW_LOADER_DLL_ORIG),)
202		$(INSTALL_PROGRAM) $(WEBVIEW_LOADER_DLL_DEST) "$(RELSYSDIR)/priv/"
203endif
204
205release_docs_spec:
206