Handle cases where LIBDIR is not "lib"

For example, Fedora installs to lib64, Debian to lib/<arch-tuple>
This commit is contained in:
Rob Gowin
2017-12-01 12:53:17 -06:00
parent 0a8e50069c
commit 778b86e29e
9 changed files with 31 additions and 27 deletions

View File

@@ -88,8 +88,10 @@ SET(TEST_MYSQL_URL "" CACHE STRING "MySQL database URL for testing")
SET(TEST_PGSQL_URL "" CACHE STRING "PgSQL database URL for testing")
SET(DATADIR_BUILD ${CMAKE_BINARY_DIR}/${DATADIRNAME})
SET(LIBDIR_BUILD ${CMAKE_BINARY_DIR}/lib)
STRING(REPLACE ${CMAKE_INSTALL_PREFIX} "" LIBDIR_BUILD ${LIBDIR})
SET(LIBDIR_BUILD ${CMAKE_BINARY_DIR}/${LIBDIR_BUILD})
SET(SYSCONFDIR_BUILD ${CMAKE_BINARY_DIR}/etc)
SET(LIBEXECDIR_BUILD ${CMAKE_BINARY_DIR}/libexec)
SET(BINDIR_BUILD ${CMAKE_BINARY_DIR}/bin)
SET(SHELL_FROM_ENV $ENV{SHELL})
@@ -506,13 +508,13 @@ SET(BUILD_SHARED_LIBS ON)
# (after the targets have been read in).
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash)
IF (XCODE_VERSION)
# FIXME: These settings break the ability to manipulate different configurations (Debug,
# FIXME: Release, etc.) in Xcode. We'll need to change the module loading C code if
# we want to support multi config.
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib/gnucash)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib/gnucash)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${LIBDIR_BUILD}/gnucash)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${LIBDIR_BUILD}/gnucash)
ENDIF()
# For binarines
@@ -808,10 +810,10 @@ add_custom_target(uninstall
SET_TARGET_PROPERTIES(gnc-core-utils gnc-module gnc-backend-sql gnc-backend-xml-utils
gnc-gnome PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}
IF (XCODE_VERSION)
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${LIBDIR_BUILD}
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${LIBDIR_BUILD}
ENDIF()
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin

View File

@@ -1,7 +1,7 @@
FUNCTION(GET_GUILE_ENV)
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
SET(_GNC_MODULE_PATH ${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash)
IF (WIN32)
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/bin)
ENDIF()
@@ -25,7 +25,7 @@ FUNCTION(GET_GUILE_ENV)
set(fpath "${fpath}${dir}:")
endforeach(dir)
LIST(APPEND env "PATH=${fpath}")
set(compiled_path "${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0")
set(compiled_path "${LIBDIR_BUILD}/gnucash/scm/ccache/2.0")
string(REGEX REPLACE "^([A-Za-z]):" "/\\1" compiled_path ${compiled_path})
LIST(APPEND env GUILE_LOAD_COMPILED_PATH=${compiled_path})
ENDIF(MINGW64)
@@ -33,7 +33,7 @@ FUNCTION(GET_GUILE_ENV)
LIST(APPEND env "GUILE=${GUILE_EXECUTABLE}")
IF (NOT WIN32)
LIST(APPEND env "GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0")
LIST(APPEND env "GUILE_LOAD_COMPILED_PATH=${LIBDIR_BUILD}/gnucash/scm/ccache/2.0")
ENDIF()
SET(guile_load_paths "")
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-foo)

View File

@@ -33,6 +33,7 @@
#ifndef __BINRELOC_C__
#define __BINRELOC_C__
#include <config.h>
#include "gncla-dir.h"
#include <platform.h>
#if PLATFORM(WINDOWS)
@@ -548,7 +549,7 @@ gnc_gbr_find_lib_dir (const gchar *default_lib_dir)
return NULL;
}
dir = g_build_filename (prefix, "lib", NULL);
dir = g_build_filename (prefix, LIBDIR, NULL);
g_free (prefix);
return dir;
}

View File

@@ -28,6 +28,7 @@ extern "C"
#include <config.h>
#include "qof.h"
#include <gnc-path.h>
#include "gncla-dir.h"
}
#include <string>
@@ -105,11 +106,11 @@ static char* get_default_module_dir(const char* rel_path)
{
#ifdef CMAKE_BUILD
#ifdef WIN32
#define LIBDIR "bin"
#define MODULE_LIBDIR "bin"
#else
#define LIBDIR "lib/gnucash"
#define MODULE_LIBDIR LIBDIR "/gnucash"
#endif
pkglibdir = g_build_path (G_DIR_SEPARATOR_S, builddir, LIBDIR, NULL);
pkglibdir = g_build_path (G_DIR_SEPARATOR_S, builddir, MODULE_LIBDIR, NULL);
#else
if (rel_path)
pkglibdir = g_build_path (G_DIR_SEPARATOR_S, builddir,

View File

@@ -22,7 +22,7 @@ FUNCTION(RUN_TEST_WITH_GUILE _TARGET _SOURCE_FILE)
GET_GUILE_ENV()
SET(CMAKE_COMMAND_TMP "")
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${GUILE_ENV};GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test")
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${GUILE_ENV};GNC_MODULE_PATH=$${LIBDIR_BUILD}/gnucash/test")
ENDIF()
ADD_TEST(NAME ${_TARGET}
COMMAND ${CMAKE_COMMAND_TMP}
@@ -32,7 +32,7 @@ FUNCTION(RUN_TEST_WITH_GUILE _TARGET _SOURCE_FILE)
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
ENDFUNCTION()
GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS "GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test")
GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS "GNC_MODULE_PATH=${LIBDIR_BUILD}/gnucash/test")
GNC_ADD_TEST_WITH_GUILE(test-modsysver test-modsysver.c
GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
@@ -42,10 +42,10 @@ GNC_ADD_TEST_WITH_GUILE(test-incompatdep test-incompatdep.c
)
GNC_ADD_TEST_WITH_GUILE(test-agedver test-agedver.c
GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
"GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test"
"GNC_MODULE_PATH=${LIBDIR_BUILD}/gnucash/test"
)
SET(_LIBDIR ${CMAKE_BINARY_DIR}/lib)
SET(_LIBDIR ${LIBDIR_BUILD})
IF (WIN32)
SET(_LIBDIR ${CMAKE_BINARY_DIR}/bin)
ENDIF()
@@ -78,7 +78,7 @@ IF(NOT WIN32)
# This little dance is needed because gnc_module_init will assert if
# it finds libgncmod_futuremod.so outside of a test that expects it.
GET_GUILE_ENV()
SET(_GNC_MODULE_PATH "${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash:${CMAKE_BINARY_DIR}/lib/gnucash/test")
SET(_GNC_MODULE_PATH "${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash:${LIBDIR_BUILD}/gnucash/test")
FOREACH(test_file ${test_gnc_module_SCHEME})
GET_FILENAME_COMPONENT(basename ${test_file} NAME_WE)
SET_TESTS_PROPERTIES(${basename} PROPERTIES ENVIRONMENT "${GUILE_ENV};GNC_MODULE_PATH=${_GNC_MODULE_PATH}")

View File

@@ -14,8 +14,8 @@ ADD_LIBRARY(gncmod_incompatdep EXCLUDE_FROM_ALL incompatdep.c)
TARGET_LINK_LIBRARIES(gncmod_incompatdep gnc-module ${GLIB2_LDFLAGS})
SET_TARGET_PROPERTIES(gncmod_agedver gncmod_futuremodsys gncmod_incompatdep PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET_DIST_LIST(misc_mods_DIST CMakeLists.txt Makefile.am agedver.c futuremodsys.c incompatdep.c)

View File

@@ -22,8 +22,8 @@ TARGET_INCLUDE_DIRECTORIES(gncmodbar PRIVATE
)
SET_TARGET_PROPERTIES(bar gncmodbar PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET_DIST_LIST(mod_bar_DIST CMakeLists.txt Makefile.am bar.c gnucash/bar.scm bar.h bar.i gnc-mod-bar.c)

View File

@@ -35,8 +35,8 @@ GNC_ADD_SCHEME_TARGETS(scm-mod-baz
)
SET_TARGET_PROPERTIES(baz gncmodbaz PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET_DIST_LIST(mod_baz_DIST CMakeLists.txt Makefile.am baz.c gnucash/baz.scm baz.h baz.i gnc-mod-baz.c)

View File

@@ -29,8 +29,8 @@ GNC_ADD_SCHEME_TARGETS(scm-mod-foo
)
SET_TARGET_PROPERTIES(foo gncmodfoo PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
LIBRARY_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
ARCHIVE_OUTPUT_DIRECTORY ${LIBDIR_BUILD}/gnucash/test
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET_DIST_LIST(mod_foo_DIST CMakeLists.txt Makefile.am foo.i gnucash/foo.scm foo.c foo.h gnc-mod-foo.c)