# SPDX-License-Identifier: Apache-2.0
#
# Copyright IBM Corp. 2021
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generate a variant of the shared library which exports all the symbols.

# With XLC this means building every file with a different
# compile-time option.

OBJFILES_EXPORTALL   := $(patsubst %.o,%.expo.o,$(INIT_OBJFILE) $(OBJFILES))

EXPORTALL_FLAG := -Wc,EXPORTALL

$(SODIR)/$(LIBNAME_PRIVATE).so: $(OBJFILES_EXPORTALL) $(H_FILES)
	$(LD) $(LDFLAGS_SHARED) -o $(SODIR)/$(LIBNAME_PRIVATE).so $(OBJFILES_EXPORTALL)
	mv $(LIBNAME_PRIVATE).x  $(SODIR)/.

$(OBJDIR)/%.expo.o: %.c
	$(CC) $(CFLAGS) $(CFLAGS_SHARED) $(EXPORTALL_FLAG) -c $< -o $@

$(OBJDIR)/%.expo.o: %.cpp
	$(CXX) $(CXXFLAGS) $(CFLAGS_SHARED) $(EXPORTALL_FLAG) -c $< -o $@

${SODIR}/${LIBNAME}.x: $(SODIR)/$(LIBNAME).so
# xlc generates the .x file while linking .so file, but outputs it to
# current directory instead of SODIR.
	mv ${LIBNAME}.x ${SODIR}/${LIBNAME}.x
