forked from opencpi/opencpi
-
Notifications
You must be signed in to change notification settings - Fork 1
/
MakeVars.ocpi
250 lines (221 loc) · 8.75 KB
/
MakeVars.ocpi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# This file is protected by Copyright. Please refer to the COPYRIGHT file
# distributed with this source distribution.
#
# This file is part of OpenCPI <http://www.opencpi.org>
#
# OpenCPI is free software: you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# OpenCPI is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
ifndef MAKEVARS_OCPI
MAKEVARS_OCPI:=1
#
# ----------------------------------------------------------------------
# Global settings. These variables must be set.
# ----------------------------------------------------------------------
#
# OCPI_BASE_DIR: The root directory for ocpi, i.e., the directory that
# contains this file. Must be an absolute path.
# OCPI_OUT_DIR: If non-empty, all object and executable files are placed
# in this subdirectory at the package level. This allows
# building for multiple targets without the need to "make
# clean" inbetween.
# VOBDIR: Location of the OCPI view.
#
# MKDEPEND: The dependency generator tool. Can just be "fpmkdepend"
# if it is in the $PATH, else it should be an absolute
# path.
# DOXYGEN: The doxygen executable.
# OCPI_DEBUG: Set to 1 to enable debug information (-g), set to 0 to
# build optimized code.
# OCPI_ASSERT: Set to 1 to enable assertions, set to 0 to disable them
# (defines NDEBUG).
# OCPI_BUILD_SHARED_LIBRARIES: Set to 1 to build shared libraries/DLLs/DKMs
# for each facility. Set to 0 to build static libraries
# and executables.
# OCPI_HAVE_CORBA: Set to 1 to enable CORBA.
#
# ----------------------------------------------------------------------
#
ifeq ($(OCPI_TARGET_OS),macos)
OCPI_DYLIB_ENV:=DYLD_LIBRARY_PATH
OCPI_DYLIB_EXT:=dylib
else
OCPI_DYLIB_ENV:=LD_LIBRARY_PATH
OCPI_DYLIB_EXT:=so
endif
#
# Build settings.
#
ifeq "$(OCPI_DEBUG)" ""
OCPI_DEBUG = 1
endif
ifeq "$(OCPI_ASSERT)" ""
OCPI_ASSERT = 1
endif
#Default is CORBA disabled.
#ifeq "$(OCPI_HAVE_CORBA)" ""
# OCPI_HAVE_CORBA = 1
#endif
ifeq "$(OCPI_BUILD_SHARED_LIBRARIES)" ""
OCPI_BUILD_SHARED_LIBRARIES = 0
endif
#
# Dependency generator
#
ifeq "$(MKDEPEND)" ""
MKDEPEND = $(OCPI_BASE_DIR)/scripts/mkdepend
endif
#
# Doxygen
#
ifeq "$(DOXYGEN)" ""
DOXYGEN = doxygen
endif
#
# ----------------------------------------------------------------------
# Optional settings.
# ----------------------------------------------------------------------
#
# ALLDEFS: A list of symbols to be defined (=1) when compiling C and
# C++ code. E.g., ALLDEFS += FOO will pass -DFOO=1 to the
# compiler.
# ALLINC: A list of include paths to be passed to the C and C++
# compilers.
# CFLAGS: Additional flags to pass to the C compiler.
# CXXFLAGS: Additional flags to pass to the C++ compiler.
# ----------------------------------------------------------------------
#
LDFLAGS = $(OCPI_LDFLAGS) $(EXTRA_LDFLAGS)
CFLAGS := $(OCPI_TARGET_CFLAGS)
CXXFLAGS := $(OCPI_TARGET_CXXFLAGS)
#
# ----------------------------------------------------------------------
# CORBA settings. Only used when $(OCPI_HAVE_CORBA)=1
# ----------------------------------------------------------------------
#
# OCPI_CORBA_ORB: Which OCPI_CORBA_ORB to use. Only "TAO" is supported at the moment.
#
# ----------------------------------------------------------------------
#
ifeq ($(OCPI_HAVE_CORBA),1)
ifeq "$(OCPI_CORBA_ORB)" ""
OCPI_CORBA_ORB = OMNI
endif
#
# ----------------------------------------------------------------------
# TAO settings. Only used when $(OCPI_HAVE_CORBA)=1 and $(OCPI_CORBA_ORB)=TAO
# ----------------------------------------------------------------------
#
# TAO_DEBUG: Set to 1 to link against the TAO debug libraries. Set to
# 0 to link against the TAO release libraries.
# ACE_ROOT: Absolute path to the "ACE_wrappers" directory.
# TAO_ROOT: Absolute path to the "ACE_wrappers/TAO" directory, so that
# $(TAO_ROOT)/tao/orb.idl exists. Usually $(ACE_ROOT)/TAO.
# TAO_BIN: Path to the TAO executables, so that $(TAO_BIN)/tao_idl
# exists. Usually $(ACE_ROOT)/bin, except when cross-
# compiling.
# ACE_LIB: Path to the ACE library. Usually $(ACE_ROOT)/lib.
# TAO_LIB: Path to the TAO libraries. Usually the same as $(ACE_LIB).
# ACE_INC: Path to the ACE include files, e.g., $(ACE_INC)/ace/ACE.h.
# Usually the same as $(ACE_ROOT).
# TAO_INC: Path to the TAO include files, e.g., $(TAO_INC)/tao/corba.h.
# Usually the same as $(TAO_ROOT).
# ORBSVCS: Path to the COSS IDL and include files, e.g.,
# $(ORBSVCS)/orbsvcs/CosNaming.idl
#
# ----------------------------------------------------------------------
#
ifeq ($(OCPI_CORBA_ORB),TAO)
ifeq "$(TAO_DEBUG)" ""
TAO_DEBUG = 0
endif
#
# Hack so that TAO and ORBexpress can live together
#
# CXXFLAGS += -DCF=VXTAO_CF -DPOA_CF=VXTAO_POA_CF -DStandardEvent=VXTAO_StandardEvent
#
# TAO paths
#
TAO_ROOT=$(ACE_ROOT)/TAO
TAO_BIN=$(HOST_ROOT)/bin
ACE_LIB=$(ACE_ROOT)/lib
TAO_LIB=$(ACE_LIB)
ACE_INC=$(ACE_ROOT)
TAO_INC=$(TAO_ROOT)
ORBSVCS=$(TAO_ROOT)/orbsvcs
endif # End: ifeq ($(OCPI_CORBA_ORB),TAO)
#
# ----------------------------------------------------------------------
# OMNI OCPI_CORBA_ORB settings. Only used when $(OCPI_HAVE_CORBA)=1 and $(OCPI_CORBA_ORB)=OMNI
# ----------------------------------------------------------------------
#
ifeq ($(OCPI_CORBA_ORB),OMNI)
ORBSVCS=
ifeq ($(OCPI_OMNI_BIN_DIR),)
OCPI_OMNI_BIN_DIR:=$(patsubst %/,%,$(dir $(shell which omniidl)))
OCPI_OMNI_IDL_DIR:=$(dir $(OCPI_OMNI_BIN_DIR))share/idl/omniORB
OCPI_OMNI_INCLUDE_DIR:=$(dir $(OCPI_OMNI_BIN_DIR))include/omniORB4
endif
export OCPI_OMNI_BIN_DIR
export OCPI_OMNI_IDL_DIR
export OCPI_OMNI_INCLUDE_DIR
endif
endif # if OCPI_HAVE_CORBA
# SCAVERSION: Can be either 2.2 or 2.2.2.
#
# ----------------------------------------------------------------------
# SCA settings
# ----------------------------------------------------------------------
#
# SCAVERSION: Can be either 2.2 or 2.2.2.
#
# ----------------------------------------------------------------------
#
SCAVERSION = 2.2.2
# function to add a ../ to pathnames, avoiding changing absolute ones
#AdjustRelative2=$(foreach i,$(1),$(if $(filter /%,$(i)),$(i),../../$(patsubst ./%,%,$(filter-out .,$(i)))))
#AdjustRelative1=$(foreach i,$(1),$(if $(filter /%,$(i)),$(i),..$(patsubst %,/%,$(patsubst ./%,%,$(filter-out .,$(i))))))
# the argument is assumed to be relative
AdjustRelative=$(if $(filter /%,$(1)),$(1),$(foreach d,$(patsubst %/,%,$(dir $(1))),$(if $(filter .,$(d)),..,../$(call AdjustRelative,$(d)))))
TrimDir=$(if $(filter %/,$(1)),$(1:%/=%),$(1))
DescendMake=$(foreach d,$(call TrimDir,$(1)),-C $(d) $(if $(filter /%,$(OCPI_BASE_DIR)),,OCPI_BASE_DIR=$(OCPI_BASE_DIR)/$(call AdjustRelative,$(d))))
DescendMake2=-C $(1) $(if $(filter /%,$(OCPI_BASE_DIR)),,OCPI_BASE_DIR=../../$(OCPI_BASE_DIR))
DescendMake1=-C $(1) $(if $(filter /%,$(OCPI_BASE_DIR)),,OCPI_BASE_DIR=../$(OCPI_BASE_DIR))
DescendFile2=$(OCPI_BASE_DIR)/$(if $(filter /%,$(OCPI_BASE_DIR)),,../..)
DescendFile1=$(OCPI_BASE_DIR)/$(if $(filter /%,$(OCPI_BASE_DIR)),,..)
export AT=@
# This extra variable OCPI_OUT_DIR is to eventually support out-of-tree building.
export OCPI_OUT_DIR=target-$(OCPI_TARGET_DIR)
#$(info OCPI_TARGET_DIR is $(OCPI_TARGET_DIR), OCPI_TARGET_MODE is $(OCPI_TARGET_MODE))
endif
# This macro is for subsidiary packages that must always be built dynamically.
# It basically redefines OCPI_TARGET_DIR and OCPI_TARGET_MODE and OCPI_BUILD_SHARED_LIBRARIES
define ForceDynamic
$$(infox DYNAMIC OVERRIDE BEFORE: $$(OCPI_TARGET_MODE) $$(OCPI_TARGET_DIR) $$(OCPI_BUILD_SHARED_LIBRARIES))
ifndef OCPI_PREVIOUS_DYNAMIC
override OCPI_PREVIOUS_DYNAMIC:=$$(OCPI_DYNAMIC)
override OCPI_BUILD_SHARED_LIBRARIES:=1
export OCPI_PREVIOUS_DYNAMIC
ifdef OCPI_TARGET_MODE
override OCPI_TARGET_MODE:=d$(if $(filter 1,$(OCPI_DEBUG)),d,o)
endif
endif
override OCPI_TARGET_DIR:=$(OCPI_TARGET_HOST)$$(and $$(OCPI_TARGET_MODE),/$$(OCPI_TARGET_MODE))
$$(infox DYNAMIC OVERRIDE AFTER: $$(OCPI_TARGET_MODE) $$(OCPI_TARGET_DIR) $$(OCPI_BUILD_SHARED_LIBRARIES) $$(OCPI_PREVIOUS_DYNAMIC))
endef
ifndef OCPI_PREREQUISITES_INSTALL_DIR
ifdef OCPI_PREREQUISITES_DIR
export OCPI_PREREQUISITES_INSTALL_DIR:=$(OCPI_PREREQUISITES_DIR)
else
export OCPI_PREREQUISITES_INSTALL_DIR:=/opt/opencpi/prerequisites
endif
endif