#!/bin/bash findbasedir() { oldpwd=$PWD cd `dirname $0` newpwd=$PWD cd $oldpwd echo $newpwd } CC=g++ UNAME=`uname -s 2>/dev/null | tr 'a-z' 'A-Z' || echo not` UNAMEM=`uname -m || echo not` if [ ${UNAMEM} == "x86_64" ]; then LIB_PATH=/usr/lib64 else LIB_PATH=/usr/lib fi XR_VERSION=1.9 XR_RUN_PATH=${LIB_PATH}/xulrunner-${XR_VERSION} XR_LIB_PATH=${LIB_PATH}/xulrunner-sdk-${XR_VERSION} XR_INC_PATH=/usr/include/xulrunner-sdk-${XR_VERSION} XR_IDL_PATH=/usr/share/idl/xulrunner-sdk-${XR_VERSION} UL_XR_SDK_PATH=/usr/include/xulrunner-1.9 DP_XR_SDK_PATH=/Developer/xulrunner-1.9.0.6-ppc DI_XR_SDK_PATH=/Developer/xulrunner-1.9.0.6-intel NSPR_INCLUDES="-I /usr/include/nspr4" AVAHI_INCLUDES="-I /usr/include/avahi-compat-libdns_sd" BASE_DIR=`findbasedir` DSDM_PATH=$BASE_DIR/manager TARGETS=`cd ${BASE_DIR}; for i in * ; do if [ -d $i ]; then echo $i ; fi ; done` buildxpt() { if [ ${UNAME} == "DARWIN" ]; then XR_PATH=${DI_XR_SDK_PATH} XPIDL=${XR_PATH}/bin/xpidl ${XPIDL} -m header -I${XR_PATH}/idl -I ${DSDM_PATH} *.idl else XPIDL=${XR_RUN_PATH}/xpidl ${XPIDL} -m header -I ${XR_LIB_PATH}/sdk/idl -I ${DSDM_PATH} -I ${XR_IDL_PATHL}/stable -I ${XR_IDL_PATH}/unstable *.idl fi } buildimpl() { if [ ${UNAME} == "DARWIN" ]; then XR_PATH=${DI_XR_SDK_PATH} ${CC} -fshort-wchar -w -c -o dsd${T}-impl-darwin-intel.o -I ${XR_PATH}/sdk/include -I ${XR_PATH}/include/xpcom -I ${XR_PATH}/idl -DXP_UNIX -DXP_MACOSX -I ${DSDM_PATH} dsd${T}-impl.cpp XR_PATH=${DP_XR_SDK_PATH} ${CC} -arch ppc -fshort-wchar -w -c -o dsd${T}-impl-darwin-ppc.o -I ${XR_PATH}/sdk/include -I ${XR_PATH}/include/xpcom -I ${XR_PATH}/idl -DXP_UNIX -DXP_MACOSX -I ${DSDM_PATH} dsd${T}-impl.cpp else if [ ${UNAMEM} == "x86_64" ]; then ${CC} -fPIC -fshort-wchar -w -c -o dsd${T}-impl-linux64.o ${NSPR_INCLUDES} -I ${XR_INC_PATH}/stable -I ${XR_INC_PATH}/unstable -DXP_UNIX -I ${DSDM_PATH} dsd${T}-impl.cpp ${AVAHI_INCLUDES} else ${CC} -fshort-wchar -w -c -o dsd${T}-impl-linux.o ${NSPR_INCLUDES} -I ${XR_INC_PATH}/stable -I ${XR_INC_PATH}/unstable -DXP_UNIX -I ${DSDM_PATH} dsd${T}-impl.cpp ${AVAHI_INCLUDES} fi fi } buildmodule() { if [ ${UNAME} == "DARWIN" ]; then XR_PATH=${DI_XR_SDK_PATH} ${CC} -fshort-wchar -w -c -o dsd${T}-module-darwin-intel.o -I ${XR_PATH}/sdk/include -I ${XR_PATH}/include/xpcom -I ${XR_PATH}/idl -DXP_UNIX -DXP_MACOSX dsd${T}-module.cpp XR_PATH=${DP_XR_SDK_PATH} ${CC} -arch ppc -fshort-wchar -w -c -o dsd${T}-module-darwin-ppc.o -I ${XR_PATH}/sdk/include -I ${XR_PATH}/include/xpcom -I ${XR_PATH}/idl -DXP_UNIX -DXP_MACOSX dsd${T}-module.cpp else if [ ${UNAMEM} == "x86_64" ]; then ${CC} -fPIC -fshort-wchar -w -c -o dsd${T}-module-linux64.o ${NSPR_INCLUDES} -I ${XR_INC_PATH}/stable -I ${XR_INC_PATH}/unstable -DXP_UNIX dsd${T}-module.cpp ${AVAHI_INCLUDES} else ${CC} -fshort-wchar -w -c -o dsd${T}-module-linux.o ${NSPR_INCLUDES} -I ${XR_INC_PATH}/stable -I ${XR_INC_PATH}/unstable -DXP_UNIX dsd${T}-module.cpp ${AVAHI_INCLUDES} fi fi } buildlib() { if [ ${UNAME} == "DARWIN" ]; then XR_PATH=${DI_XR_SDK_PATH} ${CC} -L${XR_PATH}/sdk/lib -L${XR_PATH}/bin -Wl,-executable_path, -fshort-wchar -dynamiclib -o dsd${T}-darwin-intel.dylib dsd${T}-impl-darwin-intel.o dsd${T}-module-darwin-intel.o -lxpcomglue_s -lxpcom -lnspr4 XR_PATH=${DP_XR_SDK_PATH} ${CC} -arch ppc -L${XR_LIB_PATH}/sdk/lib -L${XR_PATH}/bin -Wl,-executable_path, -fshort-wchar -dynamiclib -o dsd${T}-darwin-ppc.dylib dsd${T}-impl-darwin-ppc.o dsd${T}-module-darwin-ppc.o -lxpcomglue_s -lxpcom -lnspr4 else if [ ${UNAMEM} == "x86_64" ]; then ${CC} -shared -Wl,-z,defs -L${XR_LIB_PATH}/sdk/lib -L${XR_LIB_PATH}/bin -Wl,-rpath-link,${XR_LIB_PATH}/sdk -fshort-wchar -dynamiclib -o dsd${T}-linux64.so dsd${T}-impl-linux64.o dsd${T}-module-linux64.o -lxpcomglue_s -lxpcom -lnspr4 -ldns_sd else ${CC} -shared -Wl,-z,defs -L${XR_LIB_PATH}/sdk/lib -L${XR_LIB_PATH}/bin -Wl,-rpath-link,${XR_LIB_PATH}/sdk -fshort-wchar -dynamiclib -o dsd${T}-linux.so dsd${T}-impl-linux.o dsd${T}-module-linux.o -lxpcomglue_s -lxpcom -lnspr4 -ldns_sd fi fi } dolipo() { if [ ${UNAME} == "DARWIN" ]; then lipo -create dsd${T}-darwin-{intel,ppc}.dylib -output dsd${T}-darwin.dylib fi } cd ${BASE_DIR} for T in ${TARGETS}; do cd ${T} if [ -f *.js ]; then echo ${T} contains `ls *.js` so just building XPT buildxpt else echo ${T} is assumed to contain binary targets echo buildxpt buildxpt echo buildimpl buildimpl echo buildmodule buildmodule echo buildlib buildlib dolipo fi cd - done