From f1af605d6c698ac769e1c470a1ee7ce54c9109f9 Mon Sep 17 00:00:00 2001 From: Dick Hollenbeck Date: Fri, 4 Jan 2013 17:02:10 -0600 Subject: [PATCH] when linking a DSO, require all symbols to be resolved --- CMakeLists.txt | 5 +++++ pcbnew/CMakeLists.txt | 31 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60f3e962a2..817c2db1dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,7 +133,12 @@ if(CMAKE_COMPILER_IS_GNUCXX) # Set default flags for Debug build. set(CMAKE_C_FLAGS_DEBUG "-Wall ${KICAD_GCC_DEBUG_BUILD_FLAGS} -g3 -ggdb3 -DDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-Wall ${KICAD_GCC_DEBUG_BUILD_FLAGS} -g3 -ggdb3 -DDEBUG") + else(WIN32) + # Thou shalt not link vaporware and tell us it's a valid DSO: + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") + set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined") # needed by SWIG macros on linux + # Set default flags for Release build. set(CMAKE_C_FLAGS_RELEASE "-Wall ${KICAD_GCC_RELEASE_BUILD_FLAGS} -DNDEBUG -fPIC") set(CMAKE_CXX_FLAGS_RELEASE "-Wall ${KICAD_GCC_RELEASE_BUILD_FLAGS} -DNDEBUG -fPIC") diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index e6717f5164..768e2bf5dc 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -287,27 +287,25 @@ if (KICAD_SCRIPTING) SET(SWIG_OPTS -python -c++ -outdir ${CMAKE_CURRENT_BINARY_DIR} ${SWIG_FLAGS} ) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pcbnew_wrap.cxx - DEPENDS scripting/pcbnew.i - DEPENDS scripting/board.i - DEPENDS scripting/board_item.i - DEPENDS scripting/module.i - DEPENDS scripting/plugins.i - DEPENDS scripting/units.i - DEPENDS ../scripting/dlist.i - DEPENDS ../scripting/kicad.i - DEPENDS ../scripting/wx.i - DEPENDS ../scripting/kicadplugins.i + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pcbnew_wrap.cxx + DEPENDS scripting/pcbnew.i + DEPENDS scripting/board.i + DEPENDS scripting/board_item.i + DEPENDS scripting/module.i + DEPENDS scripting/plugins.i + DEPENDS scripting/units.i + DEPENDS ../scripting/dlist.i + DEPENDS ../scripting/kicad.i + DEPENDS ../scripting/wx.i + DEPENDS ../scripting/kicadplugins.i - COMMAND ${SWIG_EXECUTABLE} ${SWIG_OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/pcbnew_wrap.cxx scripting/pcbnew.i - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripting/fixswigimports.py ${CMAKE_CURRENT_BINARY_DIR}/pcbnew.py - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${SWIG_EXECUTABLE} ${SWIG_OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/pcbnew_wrap.cxx scripting/pcbnew.i + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripting/fixswigimports.py ${CMAKE_CURRENT_BINARY_DIR}/pcbnew.py + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - endif(KICAD_SCRIPTING) - ### # _pcbnew DLL/DSO file creation ### @@ -328,6 +326,7 @@ if (KICAD_SCRIPTING_MODULES) ${OPENGL_LIBRARIES} ${GDI_PLUS_LIBRARIES} ${PYTHON_LIBRARIES} + rt ) endif (KICAD_SCRIPTING_MODULES)