diff --git a/CMakeLists.txt b/CMakeLists.txt index 493ebd0..d76db77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,12 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -W -Wall -Wextra -g -O3") set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set(CMAKE_INSTALL_RPATH "/usr/lib/applauncherd/") +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) + + # Find libdl find_library(LIBDL NAMES dl) diff --git a/src/launcherlib/appdata.h b/src/launcherlib/appdata.h index da32467..fe8cc89 100644 --- a/src/launcherlib/appdata.h +++ b/src/launcherlib/appdata.h @@ -20,6 +20,7 @@ #ifndef APPDATA_H #define APPDATA_H +#include "launcherlib.h" #include #include @@ -33,7 +34,7 @@ using std::vector; typedef int (*entry_t)(int, char **); //! Structure for application data read from the invoker -class AppData +class DECL_EXPORT AppData { public: diff --git a/src/launcherlib/booster.h b/src/launcherlib/booster.h index dbbd0c7..03c81eb 100644 --- a/src/launcherlib/booster.h +++ b/src/launcherlib/booster.h @@ -20,6 +20,7 @@ #ifndef BOOSTER_H #define BOOSTER_H +#include "launcherlib.h" #include #include @@ -50,7 +51,7 @@ class SingleInstance; * Booster instance dies with the launched application and a new one must be created * in advance so as to launch a new application. */ -class Booster +class DECL_EXPORT Booster { public: diff --git a/src/launcherlib/connection.h b/src/launcherlib/connection.h index abe976a..6cf33aa 100644 --- a/src/launcherlib/connection.h +++ b/src/launcherlib/connection.h @@ -20,6 +20,7 @@ #ifndef CONNECTION_H #define CONNECTION_H +#include "launcherlib.h" #include "appdata.h" #include "protocol.h" @@ -38,7 +39,7 @@ using std::string; * and the launcher daemon. The low-level communication code is mostly taken * from the maemo-launcher used in Maemo 5. It might need a re-write. */ -class Connection +class DECL_EXPORT Connection { public: diff --git a/src/launcherlib/launcherlib.h b/src/launcherlib/launcherlib.h new file mode 100644 index 0000000..9f9afe6 --- /dev/null +++ b/src/launcherlib/launcherlib.h @@ -0,0 +1,6 @@ +#ifndef LAUNCHERLIB_H +#define LAUNCHERLIB_H + +#define DECL_EXPORT __attribute__ ((__visibility__("default"))) + +#endif diff --git a/src/launcherlib/logger.h b/src/launcherlib/logger.h index acca726..3f28a77 100644 --- a/src/launcherlib/logger.h +++ b/src/launcherlib/logger.h @@ -20,6 +20,7 @@ #ifndef LOGGER_H #define LOGGER_H +#include "launcherlib.h" #include /*! @@ -27,7 +28,7 @@ * \brief Logging utility class * */ -class Logger +class DECL_EXPORT Logger { public: diff --git a/src/launcherlib/main.cpp b/src/launcherlib/main.cpp index 18bc2a1..ecb54d8 100644 --- a/src/launcherlib/main.cpp +++ b/src/launcherlib/main.cpp @@ -30,8 +30,6 @@ #include #include -#define DECL_EXPORT extern "C" __attribute__ ((__visibility__("default"))) - int g_sigPipeFd = -1; char g_pipeDataSigChld = SIGCHLD; char g_pipeDataSigTerm = SIGTERM; @@ -71,7 +69,7 @@ static void sigHupHandler(int) } //! Main function -DECL_EXPORT int main(int argc, char * argv[]) +extern "C" DECL_EXPORT int main(int argc, char * argv[]) { // Open the log Logger::openLog(PROG_NAME_LAUNCHER); diff --git a/src/launcherlib/singleinstance.h b/src/launcherlib/singleinstance.h index 0917a17..edefac0 100644 --- a/src/launcherlib/singleinstance.h +++ b/src/launcherlib/singleinstance.h @@ -20,6 +20,7 @@ #ifndef SINGLEINSTANCE_H #define SINGLEINSTANCE_H +#include "launcherlib.h" #include using std::tr1::shared_ptr; @@ -50,7 +51,7 @@ struct SingleInstancePluginEntry }; //! Class that loads the single-instance binary as a plugin. -class SingleInstance +class DECL_EXPORT SingleInstance { public: diff --git a/src/launcherlib/socketmanager.h b/src/launcherlib/socketmanager.h index f499700..5dbea31 100644 --- a/src/launcherlib/socketmanager.h +++ b/src/launcherlib/socketmanager.h @@ -20,12 +20,11 @@ #ifndef SOCKETMANAGER_H #define SOCKETMANAGER_H +#include "launcherlib.h" #include - -using std::map; - #include +using std::map; using std::string; /*! @@ -34,7 +33,7 @@ using std::string; * SocketManager Manages sockets that are used in the invoker <-> booster * communication. */ -class SocketManager +class DECL_EXPORT SocketManager { public: