diff --git a/CMakeLists.txt b/CMakeLists.txt index 25042ed729..84ec69197f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -190,9 +190,11 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set( TO_LINKER -Wl ) endif() - # Thou shalt not link vaporware and tell us it's a valid DSO: - set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) - set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + # Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it) + if( NOT APPLE ) + set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + endif() set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) endif() @@ -345,12 +347,6 @@ check_find_package_result( OPENGL_FOUND "OpenGL" ) if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) add_custom_target( lib-wxpython ) - include( download_pcre ) - include( download_swig ) - include( download_wxpython ) - add_dependencies( lib-wxpython pcre ) - add_dependencies( lib-wxpython swig ) - add_dependencies( lib-wxpython libwxpython ) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") @@ -361,6 +357,9 @@ add_custom_target( lib-wxpython ) if( KICAD_BUILD_STATIC ) message(STATUS "KICAD_BUILD_STATIC set") + if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES ) + message(FATAL_ERROR "KICAD_SCRIPTING* is not supported with KICAD_BUILD_STATIC, please select KICAD_BUILD_DYNAMIC" ) + endif() endif() if( KICAD_BUILD_DYNAMIC ) @@ -374,6 +373,9 @@ add_custom_target( lib-wxpython ) include( download_libpng ) if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES ) + + message(STATUS "Scripting ENABLED") + set( SWIG_EXECUTABLE ${SWIG_ROOT}/bin/swig ) set( SWIG_INCLUDE ${SWIG_ROOT}/include ) set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages ) @@ -392,6 +394,12 @@ add_custom_target( lib-wxpython ) set(wxWidgets_INCLUDE_DIRS ${LIBWXPYTHON_ROOT}/include/wx-3.0 ) set(wxWidgets_LIBRARY_DIRS ${LIBWXPYTHON_ROOT}/lib ) + include( download_pcre ) + include( download_swig ) + include( download_wxpython ) + add_dependencies( lib-wxpython pcre ) + add_dependencies( lib-wxpython swig ) + add_dependencies( lib-wxpython libwxpython ) add_dependencies( lib-dependencies libwxpython ) else() include( download_wxwidgets ) diff --git a/scripts/osx_fixbundle.sh b/scripts/osx_fixbundle.sh index 93ace4b6db..d2c8726963 100755 --- a/scripts/osx_fixbundle.sh +++ b/scripts/osx_fixbundle.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/bash +# v 1.1 Supports migration of links (limited to the same directory) - I should add checks.. # usage osx_fixbundle.sh if [[ ! -f version.h ]]; then @@ -11,7 +12,6 @@ fi EXECUTABLES="`find . -name '*.app'`" - # # Copies libraries under in the bundle and relocates them in the binary # @@ -29,7 +29,11 @@ function fixbundle() { if [[ "$library" =~ "$bzroot" ]]; then echo "${exec}: Migrating `basename $library` in the bundle" if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then - cp -f $library ${execpath}${exec}.app/Contents/Frameworks + if [ ! -L $library ]; then + cp -f $library ${execpath}${exec}.app/Contents/Frameworks + else + resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks" + fi fi install_name_tool -change $library @executable_path/../Frameworks/`basename $library` ${execpath}${exec}.app/Contents/MacOS/${exec} fi @@ -46,7 +50,11 @@ function fixbundle() { for library in $LIBRARIES; do if [[ "$library" =~ "$bzroot" ]]; then if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then - cp -f $library ${exec}.app/Contents/Frameworks + if [ ! -L $library ]; then + cp -f $library ${exec}.app/Contents/Frameworks + else + resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks" + fi fi install_name_tool -change $library @executable_path/../Frameworks/`basename $library` $module fi @@ -70,7 +78,11 @@ function fixbundle() { for library in $LIBRARIES; do if [[ "$library" =~ "$bzroot" ]]; then if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then - cp -f $library ${exec}.app/Contents/Frameworks + if [ ! -L $library ]; then + cp -f $library ${exec}.app/Contents/Frameworks + else + resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks" + fi echo "copied `basename $library` into bundle" (( dynlib_migrate += 1)) fi @@ -84,8 +96,27 @@ function fixbundle() { cd - >/dev/null } +# +# This supports only links on the same dir (TODO ?) +# -#fixbundle $1 $2 $3 +function resolvelink() { + local srclib="`basename $1`" + local srcpath="$2" + local destpath="$3" + + #if is a file i expect a pointed "" + local pointed="`readlink ${srcpath}/${srclib}`" + + if [ ! -f ${pointed} ]; then + resolvelink "${pointed}" "${srcpath}" "${destpath}" + echo "Link ${srclib} -> ${pointed} " + (cd "${destpath}"; ln -s "${pointed}" "${srclib}" ) + else + echo "Copy ${srcpath}/${srclib} -> ${destpath} " + cp "${srcpath}/${srclib}" ${destpath} + fi +} for executable in $EXECUTABLES; do