From 02a28fb9508c865bf56fe9f5e4307ea40ceda270 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Mon, 12 Jun 2017 16:21:41 +0200
Subject: [PATCH] add definitions in the pkg-config file

---
 CMakeLists.txt                   |  6 +++---
 cmake_modules/GenPkgConfig.cmake | 20 ++++++++++++++++++++
 coreblas/CMakeLists.txt          |  2 ++
 cudablas/CMakeLists.txt          |  2 ++
 lib/pkgconfig/chameleon.pc.in    |  2 +-
 lib/pkgconfig/coreblas.pc.in     |  2 +-
 lib/pkgconfig/cudablas.pc.in     |  2 +-
 7 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c055b07ac..7d47d1d90 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1074,13 +1074,14 @@ if(CHAMELEON_ENABLE_DOCS)
 endif()
 #------------------------------------------------------------------------------
 
+get_directory_property( CHAMELEON_DEFINITIONS_LIST DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
 
 ###############################################################################
 # Config files (pkg_config) #
 #############################
 
-# Create file morse_starpu.pc
-# ---------------------------
+# Create .pc file 
+# ---------------
 generate_pkgconfig_file()
 #------------------------------------------------------------------------------
 
@@ -1106,7 +1107,6 @@ include(CPack)
 ###############################################################################
 # Print Options #
 #################
-get_directory_property( CHAMELEON_DEFINITIONS_LIST DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
 include(PrintOpts)
 
 if (CMAKE_INSTALL_PREFIX STREQUAL "/usr/local" OR CMAKE_INSTALL_PREFIX STREQUAL "C:/Program Files")
diff --git a/cmake_modules/GenPkgConfig.cmake b/cmake_modules/GenPkgConfig.cmake
index 44b431e14..f37f1a29c 100644
--- a/cmake_modules/GenPkgConfig.cmake
+++ b/cmake_modules/GenPkgConfig.cmake
@@ -80,6 +80,26 @@ ENDMACRO(CLEAN_LIB_LIST)
 ###
 MACRO(GENERATE_PKGCONFIG_FILE)
 
+    # The definitions
+    string(REGEX REPLACE ";" " -D" CHAMELEON_PKGCONFIG_DEFINITIONS "${CHAMELEON_DEFINITIONS_LIST}")
+    string(REGEX REPLACE ";" " -D" COREBLAS_PKGCONFIG_DEFINITIONS "${COREBLAS_DEFINITIONS_LIST}")
+    string(REGEX REPLACE ";" " -D" CUDABLAS_PKGCONFIG_DEFINITIONS "${CUDABLAS_DEFINITIONS_LIST}")
+    if (CHAMELEON_PKGCONFIG_DEFINITIONS)
+      set(CHAMELEON_PKGCONFIG_DEFINITIONS "-D${CHAMELEON_PKGCONFIG_DEFINITIONS}")
+    else()
+      set(CHAMELEON_PKGCONFIG_DEFINITIONS "")
+    endif()
+    if (COREBLAS_PKGCONFIG_DEFINITIONS)
+      set(COREBLAS_PKGCONFIG_DEFINITIONS  "-D${COREBLAS_PKGCONFIG_DEFINITIONS}")
+    else()
+      set(COREBLAS_PKGCONFIG_DEFINITIONS "")
+    endif()
+    if (CUDABLAS_PKGCONFIG_DEFINITIONS)
+      set(CUDABLAS_PKGCONFIG_DEFINITIONS  "-D${CUDABLAS_PKGCONFIG_DEFINITIONS}")
+    else()
+      set(CUDABLAS_PKGCONFIG_DEFINITIONS "")
+    endif()
+
     # The link flags specific to this package and any required libraries
     # that don't support PkgConfig
     set(CHAMELEON_PKGCONFIG_LIBS "-lchameleon")
diff --git a/coreblas/CMakeLists.txt b/coreblas/CMakeLists.txt
index df58613de..1769baf43 100644
--- a/coreblas/CMakeLists.txt
+++ b/coreblas/CMakeLists.txt
@@ -32,6 +32,8 @@ if (NOT CHAMELEON_SIMULATION)
     add_subdirectory(eztrace_module)
 endif()
 
+get_directory_property( COREBLAS_DEFINITIONS_LIST DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
+
 ###
 ### END CMakeLists.txt
 ###
diff --git a/cudablas/CMakeLists.txt b/cudablas/CMakeLists.txt
index 0a1fb991d..ccfcc7095 100644
--- a/cudablas/CMakeLists.txt
+++ b/cudablas/CMakeLists.txt
@@ -32,6 +32,8 @@ if (NOT CHAMELEON_SIMULATION)
     add_subdirectory(eztrace_module)
 endif()
 
+get_directory_property( CUDABLAS_DEFINITIONS_LIST DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
+
 ###
 ### END CMakeLists.txt
 ###
diff --git a/lib/pkgconfig/chameleon.pc.in b/lib/pkgconfig/chameleon.pc.in
index 1a70c174e..028e3d907 100644
--- a/lib/pkgconfig/chameleon.pc.in
+++ b/lib/pkgconfig/chameleon.pc.in
@@ -6,7 +6,7 @@ includedir=${exec_prefix}/include/chameleon
 Name: chameleon
 Description: Dense Linear Algebra for Scalable Multi-core Architectures and GPGPUs
 Version: @CHAMELEON_VERSION_MAJOR@.@CHAMELEON_VERSION_MINOR@.@CHAMELEON_VERSION_MICRO@
-Cflags: -I${includedir} -I${includedir}/coreblas/include
+Cflags: @CHAMELEON_PKGCONFIG_DEFINITIONS@ -I${includedir} -I${includedir}/coreblas/include
 Libs: -L${libdir} @CHAMELEON_PKGCONFIG_LIBS@
 Libs.private: @CHAMELEON_PKGCONFIG_LIBS_PRIVATE@
 Requires: @CHAMELEON_PKGCONFIG_REQUIRED@
diff --git a/lib/pkgconfig/coreblas.pc.in b/lib/pkgconfig/coreblas.pc.in
index 4897a519f..26b1dbb17 100644
--- a/lib/pkgconfig/coreblas.pc.in
+++ b/lib/pkgconfig/coreblas.pc.in
@@ -6,7 +6,7 @@ includedir=${exec_prefix}/include/chameleon/coreblas/include
 Name: coreblas
 Description: Interface to CBLAS/LAPACKE routines + some other auxiliary routines
 Version: @CHAMELEON_VERSION_MAJOR@.@CHAMELEON_VERSION_MINOR@.@CHAMELEON_VERSION_MICRO@
-Cflags: -I${includedir}
+Cflags: @COREBLAS_PKGCONFIG_DEFINITIONS@ -I${includedir}
 Libs: -L${libdir} @COREBLAS_PKGCONFIG_LIBS@
 Libs.private: @COREBLAS_PKGCONFIG_LIBS_PRIVATE@
 Requires: @COREBLAS_PKGCONFIG_REQUIRED@
diff --git a/lib/pkgconfig/cudablas.pc.in b/lib/pkgconfig/cudablas.pc.in
index 367cf1520..db3f0f14c 100644
--- a/lib/pkgconfig/cudablas.pc.in
+++ b/lib/pkgconfig/cudablas.pc.in
@@ -6,7 +6,7 @@ includedir=${exec_prefix}/include/chameleon/cudablas/include
 Name: cudablas
 Description: Interface to cuBLAS/MAGMA routines + some other auxiliary routines
 Version: @CHAMELEON_VERSION_MAJOR@.@CHAMELEON_VERSION_MINOR@.@CHAMELEON_VERSION_MICRO@
-Cflags: -I${includedir}
+Cflags: @CUDABLAS_PKGCONFIG_DEFINITIONS@ -I${includedir}
 Libs: -L${libdir} @CUDABLAS_PKGCONFIG_LIBS@
 Libs.private: @CUDABLAS_PKGCONFIG_LIBS_PRIVATE@
 Requires: @CUDABLAS_PKGCONFIG_REQUIRED@
-- 
GitLab