Skip to content
Snippets Groups Projects
Commit dbe64f88 authored by Valerio Mariani's avatar Valerio Mariani
Browse files

Options and changes to achieve Debian compaitbility

1. Option to move libexec to lib/openstructure/libexec
2. Gosty moved to libexec
parent 8824dd87
Branches
Tags
No related merge requests found
......@@ -12,6 +12,7 @@ CTestTestfile.cmake
.*
!.gitignore
CMakeCache.txt
version.hh
config.hh
*.pyc
index.txt
......
......@@ -34,8 +34,10 @@ option(ENABLE_SPNAV "whether 3DConnexion devices should be supported"
OFF)
option(STATIC_PROPERTY_WORKAROUND "workaround for static property bug with some boost/boost_python combinations" OFF)
option(DEPLOYMENT "switch on deployment settings" OFF)
option(COMPILE_TESTS "wheter unit tests should be compiled by default" OFF)
option(COMPILE_TESTS "whether unit tests should be compiled by default" OFF)
option(ENABLE_STATIC "whether static libraries should be compiled" OFF)
option(DEBIAN_STYLE_LIBEXEC "whether 'libexec' should be put under 'lib/openstructure" OFF)
if (CXX)
set(CMAKE_CXX_COMPILER ${CXX})
endif()
......@@ -114,6 +116,12 @@ else()
set(_PROFILE OFF)
endif()
if (DEBIAN_STYLE_LIBEXEC)
set(_DEBIAN_STYLE_LIBEXEC ON)
else()
set(_DEBIAN_STYLE_LIBEXEC OFF)
endif()
add_definitions(-DEIGEN2_SUPPORT)
if (COMPOUND_LIB)
......@@ -222,16 +230,17 @@ set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
message(STATUS
"OpenStructure will be built with the following options:\n"
" Install Prefix (-DPREFIX) : ${CMAKE_INSTALL_PREFIX}\n"
" RPath in install (-DUSE_RPATH) : ${_USE_RPATH}\n"
" Graphical interface (-DENABLE_GUI) : ${_UI}\n"
" OpenGL support (-DENABLE_GFX) : ${_OPENGL}\n"
" Image Processing support (-DENABLE_IMG) : ${_IMG}\n"
" Shader support (-DUSE_SHADER) : ${_SHADER}\n"
" Numpy support (-DUSE_NUMPY) : ${_NUMPY}\n"
" Optimize (-DOPTIMIZE) : ${_OPT}\n"
" Profiling support (-DPROFILE) : ${_PROFILE}\n"
" Double Precision (-DUSE_DOUBLE_PRECISION) : ${_DOUBLE_PREC}\n"
" Compound Lib (-DCOMPOUND_LIB) : ${_COMP_LIB}\n"
" TMAlign and TMScore (-DCOMPILE_TMTOOLS) : ${_TM_TOOLS}\n"
" Static Libraries (-DENABLE_STATIC) : ${ENABLE_STATIC}")
" Install Prefix (-DPREFIX) : ${CMAKE_INSTALL_PREFIX}\n"
" RPath in install (-DUSE_RPATH) : ${_USE_RPATH}\n"
" Graphical interface (-DENABLE_GUI) : ${_UI}\n"
" OpenGL support (-DENABLE_GFX) : ${_OPENGL}\n"
" Image Processing support (-DENABLE_IMG) : ${_IMG}\n"
" Shader support (-DUSE_SHADER) : ${_SHADER}\n"
" Numpy support (-DUSE_NUMPY) : ${_NUMPY}\n"
" Optimize (-DOPTIMIZE) : ${_OPT}\n"
" Profiling support (-DPROFILE) : ${_PROFILE}\n"
" Double Precision (-DUSE_DOUBLE_PRECISION) : ${_DOUBLE_PREC}\n"
" Compound Lib (-DCOMPOUND_LIB) : ${_COMP_LIB}\n"
" TMAlign and TMScore (-DCOMPILE_TMTOOLS) : ${_TM_TOOLS}\n"
" Static Libraries (-DENABLE_STATIC) : ${ENABLE_STATIC}\n"
" Debian-style 'libexec' (-DDEBIAN_STYLE_LIBEXEC) : ${_DEBIAN_STYLE_LIBEXEC}")
\ No newline at end of file
......@@ -313,6 +313,40 @@ macro(executable)
endmacro()
#-------------------------------------------------------------------------------
# Synopsis
# executable_libexec(NAME exe_name SOURCES source1 source2 LINK link1 link2)
#
# Description:
# Compile, link and stage a C++ executable into the libexec directory
#-------------------------------------------------------------------------------
macro(executable_libexec)
parse_argument_list(_ARG
"NAME;SOURCES;LINK;DEPENDS_ON" "NO_RPATH;STATIC" ${ARGN})
if (NOT _ARG_NAME)
message(FATAL_ERROR "invalid use of executable(): a name must be provided")
endif()
add_executable(${_ARG_NAME} ${_ARG_SOURCES})
set_target_properties(${_ARG_NAME}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
"${LIBEXEC_STAGE_PATH}")
if (APPLE AND NOT _ARG_NO_RPATH AND NOT _ARG_STATIC)
set_target_properties(${_ARG_NAME} PROPERTIES
LINK_FLAGS "-Wl,-rpath,@loader_path/../lib")
endif()
if (_ARG_LINK)
target_link_libraries(${_ARG_NAME} ${_ARG_LINK})
endif()
if (ENABLE_STATIC AND _ARG_STATIC)
set(TARGET_SUFFIX _static)
target_link_libraries(${_ARG_NAME} ${STATIC_LIBRARIES})
endif()
foreach(_DEP ${_ARG_DEPENDS_ON})
target_link_libraries(${_ARG_NAME} ${_DEP}${TARGET_SUFFIX})
endforeach()
install(TARGETS ${_ARG_NAME} DESTINATION ${LIBEXEC_PATH})
endmacro()
#-------------------------------------------------------------------------------
# Synopsis:
# substitute(IN_FILE in_file OUT_FILE out_file DICT a=b c=d)
......@@ -586,7 +620,7 @@ macro(ost_unittest)
endif()
if (WIN32)
target_link_libraries(${_test_name} ${BOOST_UNIT_TEST_LIBRARIES} "${_ARG_PREFIX}_${_ARG_MODULE}")
add_custom_target("${_test_name}_run"
add_custom_target("${_test_name}_run":
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${_test_name}.exe || echo
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/..
COMMENT "running checks for module ${_ARG_MODULE}"
......@@ -725,7 +759,6 @@ macro(setup_stage)
set(STAGE_DIR "${CMAKE_BINARY_DIR}/stage")
set(EXECUTABLE_OUTPUT_PATH ${STAGE_DIR}/bin )
set(HEADER_STAGE_PATH ${STAGE_DIR}/include )
set(LIBEXEC_STAGE_PATH ${STAGE_DIR}/libexec/openstructure )
set(SHARED_DATA_PATH ${STAGE_DIR}/share/openstructure )
if (UNIX AND NOT APPLE)
......@@ -739,6 +772,16 @@ macro(setup_stage)
set(LIB_DIR lib )
set(LIB_STAGE_PATH "${STAGE_DIR}/lib" )
endif()
if (_DEBIAN_STYLE_LIBEXEC)
set(LIBEXEC_PATH ${LIB_DIR}/openstructure/libexec )
else()
set(LIBEXEC_PATH libexec/openstructure )
endif()
if (_DEBIAN_STYLE_LIBEXEC)
set(LIBEXEC_STAGE_PATH ${LIB_STAGE_PATH}/openstructure/libexec )
else()
set(LIBEXEC_STAGE_PATH ${STAGE_DIR}/libexec/openstructure )
endif()
include_directories("${HEADER_STAGE_PATH}")
link_directories(${LIB_STAGE_PATH})
......
......@@ -57,6 +57,11 @@ if (FFTW_USE_THREADS)
else()
set(fftw_use_threads 0)
endif()
if (_DEBIAN_STYLE_LIBEXEC)
set(debian_style_libexec 1)
else()
set(debian_style_libexec 0)
endif()
set(config_hh_generator "CMake")
set(CONFIG_HH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/config.hh")
......
......@@ -32,4 +32,6 @@
#define OST_SPNAV_ENABLED @spnav_enabled@
#define OST_FFT_USE_THREADS @fftw_use_threads@
#define OST_NUMPY_SUPPORT_ENABLED @numpy_support@
#define OST_DEBIAN_STYLE_LIBEXEC @debian_style_libexec@
#endif
......@@ -471,5 +471,5 @@ if (NOT WIN32)
set(LINK LINK ${BOOST_PROGRAM_OPTIONS_LIBRARIES})
endif()
executable(NAME gosty SOURCES gosty.cc ${OST_GOSTY_MOC} ${OST_QT_RESOURCE}
executable_libexec(NAME gosty SOURCES gosty.cc ${OST_GOSTY_MOC} ${OST_QT_RESOURCE}
DEPENDS_ON ost_gui ${LINK})
......@@ -82,13 +82,27 @@ String get_ost_root()
{
QDir dir(QApplication::applicationDirPath());
#if OST_DEBIAN_STYLE_LIBEXEC
#ifdef _MSC_VER
dir.cdUp();
dir.cdUp();
dir.cdUp();
dir.cdUp();
#else
dir.cdUp();
dir.cdUp();
dir.cdUp();
#endif
#else
#ifdef _MSC_VER
dir.cdUp();
dir.cdUp();
dir.cdUp();
#else
dir.cdUp();
dir.cdUp();
#endif
#endif
return dir.path().toStdString();
}
......
set(SUBST_DICT BUILD_TYPE=${CMAKE_BUILD_TYPE} PYTHON_BINARY=${PYTHON_BINARY} LIBDIR=${LIB_DIR})
set(SUBST_DICT BUILD_TYPE=${CMAKE_BUILD_TYPE} PYTHON_BINARY=${PYTHON_BINARY} LIBDIR=${LIB_DIR} LIBEXEC_PATH=${LIBEXEC_PATH})
message("${BUILD_TYPE}")
add_custom_target(ost_scripts ALL)
......@@ -19,7 +19,7 @@ if(WIN32)
script(NAME gipltng.bat INPUT gipltng.bat.in SUBSTITUTE ${SUBST_DICT})
else()
script(NAME ost_config INPUT ost_config.in SUBSTITUTE ${SUBST_DICT}
TARGET ost_scripts OUTPUT_DIR libexec/openstructure)
TARGET ost_scripts OUTPUT_DIR ${LIBEXEC_PATH})
script(NAME ost INPUT ost.in SUBSTITUTE ${SUBST_DICT}
TARGET ost_scripts)
if (ENABLE_GUI)
......
......@@ -26,6 +26,6 @@ else
SCRIPT_NAME="$0"
fi
BIN_DIR=`dirname "$SCRIPT_NAME"`
source $BIN_DIR/../libexec/openstructure/ost_config
source $BIN_DIR/../@LIBEXEC_PATH@/ost_config
$DNG_BINDIR/gosty $DNG_INITDIR/init.py ost $opts
$BIN_DIR/../@LIBEXEC_PATH@/gosty $DNG_INITDIR/init.py ost $opts
......@@ -29,7 +29,7 @@ else
fi
BIN_DIR=`dirname "$SCRIPT_NAME"`
source $BIN_DIR/../libexec/openstructure/ost_config
source $BIN_DIR/../@LIBEXEC_PATH@/ost_config
$pyexec $interactive "$DNG_ROOT/@LIBDIR@/openstructure/init_cl.py" $opts
RC=$?
......
......@@ -26,10 +26,10 @@ export DNG_BINDIR="$DNG_ROOT/bin"
export DNG_LIBDIR="$DNG_ROOT/@LIBDIR@"
export DNG_INITDIR="$DNG_LIBDIR/openstructure"
#export PATH="$DNG_BINDIR:$PATH"
#export DYLD_FRAMEWORK_PATH="$BIN_LIBDIR:${DYLD_FRAMEWORK_PATH}"
#export DYLD_LIBRARY_PATH="$BIN_LIBDIR:${DYLD_LIBRARY_PATH}"
#export LD_LIBRARY_PATH="$DNG_LIBDIR:$LD_LIBRARY_PATH"
export PATH="$DNG_BINDIR:$PATH"
export DYLD_FRAMEWORK_PATH="$BIN_LIBDIR:${DYLD_FRAMEWORK_PATH}"
export DYLD_LIBRARY_PATH="$BIN_LIBDIR:${DYLD_LIBRARY_PATH}"
export LD_LIBRARY_PATH="$DNG_LIBDIR:$LD_LIBRARY_PATH"
# set QT_PLUGIN_PATH PYTHONHOME and PYTHONPATH for bundle (commented except in linux bundles)
# set QT_PLUGIN_PATH and pythonpath for bundle (commented except in linux bundles)
#export QT_PLUGIN_PATH="$BIN_DIR/plugins"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment