#! /bin/sh # Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. replaceLinesWithFile() { while true do MATCHED_LINE=`grep -n "${1}" "${2}" | head -n 1` if test "x${MATCHED_LINE}" = "x" then break fi MATCHED_LINE=`echo ${MATCHED_LINE} | sed 's/^\([1-9][0-9]*\):.*$/\1/'` head -n `expr ${MATCHED_LINE} - 1` "${2}" > "${2}.tmp" cat "${3}" >> "${2}.tmp" tail +`expr ${MATCHED_LINE} + 1` "${2}" >> "${2}.tmp" mv "${2}.tmp" "${2}" done } renamedHeaders() { cat "${3}" | sed "s|^# *include *\"\(.*\)${1}\" *$|#include \"\1${2}\"|" > "${3}.tmp" mv "${3}.tmp" "${3}" } IDL_NAME_WO_PATH=`echo ${1} | sed 's|^.*[\\/]\([^\\/]*\)$|\1|'` case "${ORB_TYPE}" in omniORB|omniorb) # Unify content. cat "${IDL_NAME_WO_PATH}.hpp" > "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}Dyn.cpp" | sed '/^.*_0RL_library_version.*$/d' >> "${IDL_NAME_WO_PATH}.cpp" rm -f "${IDL_NAME_WO_PATH}Dyn.cpp" cat "${IDL_NAME_WO_PATH}.cpp" > "${IDL_NAME_WO_PATH}Server.cpp" # omniORB always includes headers without a path, i.e. no need of unification here. ;; MICO|mico) # Unify content. cat "${IDL_NAME_WO_PATH}.hpp" > "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" > "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}_skel.cpp" >> "${IDL_NAME_WO_PATH}Server.cpp" rm -f "${IDL_NAME_WO_PATH}_skel.cpp" # Unify generated headers includes. # MICO includes generated headers with #include "..." and its own headers with #include <...>. # The following lines remove the path part for all generated headers includes. cat "${IDL_NAME_WO_PATH}.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}.hpp.tmp" "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}Server.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.hpp.tmp" "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}.cpp.tmp" "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}Server.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.cpp.tmp" "${IDL_NAME_WO_PATH}Server.cpp" ;; ORBacus|orbacus) # Unify content. cat "${IDL_NAME_WO_PATH}.cpp" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}Server_tie.hpp" >> "${IDL_NAME_WO_PATH}Server.hpp" rm -f "${IDL_NAME_WO_PATH}Server_tie.hpp" # Intermediate unification with MICO. # ORBacus uses #include <...> for everything. # The following lines change the include style to #include "..." for every header which path does not begin with "OB/". cat "${IDL_NAME_WO_PATH}.hpp" | \ sed "s|^# *include *<\([^O].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(O[^B].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(OB[^\\/].*\)>$|#include \"\1\"|" \ > "${IDL_NAME_WO_PATH}.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}.hpp.tmp" "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}Server.hpp" | \ sed "s|^# *include *<\([^O].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(O[^B].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(OB[^\\/].*\)>$|#include \"\1\"|" \ > "${IDL_NAME_WO_PATH}Server.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.hpp.tmp" "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" | \ sed "s|^# *include *<\([^O].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(O[^B].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(OB[^\\/].*\)>$|#include \"\1\"|" \ > "${IDL_NAME_WO_PATH}.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}.cpp.tmp" "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}Server.cpp" | \ sed "s|^# *include *<\([^O].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(O[^B].*\)>$|#include \"\1\"|" | \ sed "s|^# *include *<\(OB[^\\/].*\)>$|#include \"\1\"|" \ > "${IDL_NAME_WO_PATH}Server.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.cpp.tmp" "${IDL_NAME_WO_PATH}Server.cpp" # Unify generated headers includes. # The same as MICO's. cat "${IDL_NAME_WO_PATH}.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}.hpp.tmp" "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}Server.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.hpp.tmp" "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}.cpp.tmp" "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}Server.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.cpp.tmp" "${IDL_NAME_WO_PATH}Server.cpp" ;; VisiBroker|visibroker) # Unify content. cat "${IDL_NAME_WO_PATH}.cpp" >> "${IDL_NAME_WO_PATH}Server.cpp" # Unify generated headers includes. # VisiBroker uses #include "..." for everything. # Thus, we can't differentiate between a generated and a VisiBroker's own header. # Hopefully, all VisiBroker headers will be included without a path. cat "${IDL_NAME_WO_PATH}.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}.hpp.tmp" "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}Server.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.hpp.tmp" "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}.cpp.tmp" "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}Server.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.cpp.tmp" "${IDL_NAME_WO_PATH}Server.cpp" ;; orbitcpp) # Unify content. replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}.h\" *$" "${IDL_NAME_WO_PATH}-cpp-common.h" "${IDL_NAME_WO_PATH}.h" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}-cpp-common.h\" *$" "${IDL_NAME_WO_PATH}-cpp-stubs.h" "${IDL_NAME_WO_PATH}-cpp-common.h" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}-cpp-common.h\" *$" "${IDL_NAME_WO_PATH}-cpp-skels.h" "${IDL_NAME_WO_PATH}-cpp-common.h" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}-cpp-stubs.h\" *$" "${IDL_NAME_WO_PATH}-cpp-skels.h" "${IDL_NAME_WO_PATH}-cpp-stubs.h" echo "extern \"C++\" {" > "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}-cpp-stubs.h" >> "${IDL_NAME_WO_PATH}.hpp" echo "} // extern \"C++\"" >> "${IDL_NAME_WO_PATH}.hpp" echo "extern \"C++\" {" > "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}-cpp-skels.h" >> "${IDL_NAME_WO_PATH}Server.hpp" echo "} // extern \"C++\"" >> "${IDL_NAME_WO_PATH}Server.hpp" rm -f "${IDL_NAME_WO_PATH}.h" "${IDL_NAME_WO_PATH}-cpp-common.h" "${IDL_NAME_WO_PATH}-cpp.h" "${IDL_NAME_WO_PATH}-cpp-stubs.h" "${IDL_NAME_WO_PATH}-cpp-skels.h" echo "extern \"C\" {" > "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}-common.c" >> "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}-stubs.c" >> "${IDL_NAME_WO_PATH}.cpp" echo "} // extern \"C\"" >> "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}-cpp-common.cc" >> "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}-cpp-stubs.cc" >> "${IDL_NAME_WO_PATH}.cpp" echo "extern \"C\" {" > "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-common.c" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-stubs.c" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-skels.c" >> "${IDL_NAME_WO_PATH}Server.cpp" echo "} // extern \"C\"" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-cpp-common.cc" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-cpp-stubs.cc" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}-cpp-skels.cc" >> "${IDL_NAME_WO_PATH}Server.cpp" rm -f "${IDL_NAME_WO_PATH}-common.c" "${IDL_NAME_WO_PATH}-stubs.c" "${IDL_NAME_WO_PATH}-skels.c" "${IDL_NAME_WO_PATH}-cpp-common.cc" "${IDL_NAME_WO_PATH}-cpp-stubs.cc" "${IDL_NAME_WO_PATH}-cpp-skels.cc" "${IDL_NAME_WO_PATH}-cpp.cc" # Unify generated headers includes. for src_file in "${IDL_NAME_WO_PATH}.hpp" "${IDL_NAME_WO_PATH}.cpp" do renamedHeaders "-cpp-stubs.h" ".hpp" "${src_file}" renamedHeaders ".h" ".hpp" "${src_file}" renamedHeaders "-cpp-common.h" ".hpp" "${src_file}" done for src_file in "${IDL_NAME_WO_PATH}Server.hpp" "${IDL_NAME_WO_PATH}Server.cpp" do renamedHeaders "-cpp-stubs.h" "Server.hpp" "${src_file}" # The second argument should be ".hpp", but the C++ backend generates incorrect inclusions. renamedHeaders "-cpp-skels.h" "Server.hpp" "${src_file}" renamedHeaders ".h" "Server.hpp" "${src_file}" # The second argument should be ".hpp", but the C++ backend generates incorrect inclusions. renamedHeaders "-cpp-common.h" "Server.hpp" "${src_file}" # The second argument should be ".hpp", but the C++ backend generates incorrect inclusions. done ;; TAO|tao) # Unify content. replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}.inl\" *$" "${IDL_NAME_WO_PATH}.hpp" "${IDL_NAME_WO_PATH}.inl" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}.inl\" *$" "${IDL_NAME_WO_PATH}.cpp" "${IDL_NAME_WO_PATH}.inl" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server.inl\" *$" "${IDL_NAME_WO_PATH}Server.hpp" "${IDL_NAME_WO_PATH}Server.inl" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server.inl\" *$" "${IDL_NAME_WO_PATH}Server.cpp" "${IDL_NAME_WO_PATH}Server.inl" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server_T.inl\" *$" "${IDL_NAME_WO_PATH}Server_T.hpp" "${IDL_NAME_WO_PATH}Server_T.inl" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server_T.inl\" *$" "${IDL_NAME_WO_PATH}Server_T.cpp" "${IDL_NAME_WO_PATH}Server_T.inl" renamedHeaders "Server_T.hpp" "Server.hpp" "${IDL_NAME_WO_PATH}Server_T.cpp" cat "${IDL_NAME_WO_PATH}Server_T.cpp" >> "${IDL_NAME_WO_PATH}Server.cpp" cat "${IDL_NAME_WO_PATH}Server_T.hpp" | sed "s|^# *pragma *implementation *( *\"\(.*\)${IDL_NAME_WO_PATH}Server_T.cpp\" *) *$|#pragma implementation (\"\1${IDL_NAME_WO_PATH}Server.cpp\")|" > "${IDL_NAME_WO_PATH}Server_T.hpp.tmp" mv "${IDL_NAME_WO_PATH}Server_T.hpp.tmp" "${IDL_NAME_WO_PATH}Server_T.hpp" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server_T.cpp\" *$" "${IDL_NAME_WO_PATH}Server_T.hpp" "${IDL_NAME_WO_PATH}Server_T.cpp" replaceLinesWithFile "^# *include *\"${IDL_NAME_WO_PATH}Server_T.hpp\" *$" "${IDL_NAME_WO_PATH}Server.hpp" "${IDL_NAME_WO_PATH}Server_T.hpp" cat "${IDL_NAME_WO_PATH}.cpp" >> "${IDL_NAME_WO_PATH}Server.cpp" rm -f "${IDL_NAME_WO_PATH}.inl" "${IDL_NAME_WO_PATH}Server.inl" "${IDL_NAME_WO_PATH}Server_T.inl" "${IDL_NAME_WO_PATH}Server_T.hpp" "${IDL_NAME_WO_PATH}Server_T.cpp" # Unify generated headers includes. # The same as MICO's. cat "${IDL_NAME_WO_PATH}.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}.hpp.tmp" "${IDL_NAME_WO_PATH}.hpp" cat "${IDL_NAME_WO_PATH}Server.hpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.hpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.hpp.tmp" "${IDL_NAME_WO_PATH}Server.hpp" cat "${IDL_NAME_WO_PATH}.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}.cpp.tmp" "${IDL_NAME_WO_PATH}.cpp" cat "${IDL_NAME_WO_PATH}Server.cpp" | sed "s|^# *include *\".*[\\/]\([^\\/]*\)$|#include \"\1|" > "${IDL_NAME_WO_PATH}Server.cpp.tmp" mv -f "${IDL_NAME_WO_PATH}Server.cpp.tmp" "${IDL_NAME_WO_PATH}Server.cpp" ;; *) echo "Unknown ORB" exit 1 ;; esac # If there is a path in %BASE% then subdir-objects is being used. if test "x${IDL_NAME_WO_PATH}" != "x${1}" then mv -f "${IDL_NAME_WO_PATH}.hpp" "${1}.hpp" mv -f "${IDL_NAME_WO_PATH}.cpp" "${1}.cpp" mv -f "${IDL_NAME_WO_PATH}Server.hpp" "${1}Server.hpp" mv -f "${IDL_NAME_WO_PATH}Server.cpp" "${1}Server.cpp" fi exit 0