From f53f04724c714a40c10e8c0afdca465054fabca8 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <ben.boeckel@kitware.com>
Date: Tue, 21 Oct 2014 12:38:00 -0400
Subject: [PATCH] cmake: handle private vs. public headers

---
 src/CMakeLists.txt                   | 13 +++++++++++++
 src/common/CMakeLists.txt            | 12 ++++++++++--
 src/connectivity_tool/CMakeLists.txt |  4 ++--
 src/crypto/CMakeLists.txt            |  9 +++++++--
 src/cryptonote_core/CMakeLists.txt   |  9 +++++++--
 src/daemon/CMakeLists.txt            |  9 +++++++--
 src/miner/CMakeLists.txt             |  9 +++++++--
 src/mnemonics/CMakeLists.txt         |  9 +++++++--
 src/rpc/CMakeLists.txt               |  9 +++++++--
 src/simplewallet/CMakeLists.txt      |  9 +++++++--
 src/wallet/CMakeLists.txt            |  9 +++++++--
 11 files changed, 81 insertions(+), 20 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3a229ddda..ec773ae02 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -32,6 +32,19 @@ add_definitions(-DSTATICLIB)
 # miniupnp changed their static define
 add_definitions(-DMINIUPNP_STATICLIB)
 
+function (bitmonero_private_headers group)
+  source_group("${group}\\Private"
+    FILES
+      ${ARGN})
+endfunction ()
+
+function (bitmonero_install_headers subdir)
+  install(
+    FILES       ${ARGN}
+    DESTINATION "include/${subdir}"
+    COMPONENT   development)
+endfunction ()
+
 function (bitmonero_add_executable name)
   source_group("${name}"
     FILES
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 47456afbd..fcc30e192 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -32,7 +32,9 @@ set(common_sources
   dns_utils.cpp
   util.cpp)
 
-set(common_headers
+set(common_headers)
+
+set(common_private_headers
   base58.h
   boost_serialization_helper.h
   command_line.h
@@ -43,9 +45,12 @@ set(common_headers
   util.h
   varint.h)
 
+bitmonero_private_headers(common
+  ${common_private_headers})
 bitmonero_add_library(common
   ${common_sources}
-  ${common_headers})
+  ${common_headers}
+  ${common_private_headers})
 target_link_libraries(common
   PRIVATE
     crypto
@@ -54,3 +59,6 @@ target_link_libraries(common
     ${Boost_FILESYSTEM_LIBRARY}
     ${Boost_SYSTEM_LIBRARY}
     ${EXTRA_LIBRARIES})
+
+#bitmonero_install_headers(common
+#  ${common_headers})
diff --git a/src/connectivity_tool/CMakeLists.txt b/src/connectivity_tool/CMakeLists.txt
index de52b0648..b3a495af9 100644
--- a/src/connectivity_tool/CMakeLists.txt
+++ b/src/connectivity_tool/CMakeLists.txt
@@ -29,11 +29,11 @@
 set(connectivity_tool_sources
   conn_tool.cpp)
 
-set(connectivity_tool_headers)
+set(connectivity_tool_private_headers)
 
 bitmonero_add_executable(connectivity_tool
   ${connectivity_tool_sources}
-  ${connectivity_tool_headers})
+  ${connectivity_tool_private_headers})
 target_link_libraries(connectivity_tool
   PRIVATE
     cryptonote_core
diff --git a/src/crypto/CMakeLists.txt b/src/crypto/CMakeLists.txt
index d13b9c8bc..4afcab9c8 100644
--- a/src/crypto/CMakeLists.txt
+++ b/src/crypto/CMakeLists.txt
@@ -47,7 +47,9 @@ set(crypto_sources
   slow-hash.c
   tree-hash.c)
 
-set(crypto_headers
+set(crypto_headers)
+
+set(crypto_private_headers
   blake256.h
   chacha8.h
   crypto-ops.h
@@ -66,6 +68,9 @@ set(crypto_headers
   skein.h
   skein_port.h)
 
+bitmonero_private_headers(crypto
+  ${crypto_private_headers})
 bitmonero_add_library(crypto
   ${crypto_sources}
-  ${crypto_headers})
+  ${crypto_headers}
+  ${crypto_private_headers})
diff --git a/src/cryptonote_core/CMakeLists.txt b/src/cryptonote_core/CMakeLists.txt
index fd84a75ca..c18b01b5d 100644
--- a/src/cryptonote_core/CMakeLists.txt
+++ b/src/cryptonote_core/CMakeLists.txt
@@ -38,7 +38,9 @@ set(cryptonote_core_sources
   miner.cpp
   tx_pool.cpp)
 
-set(cryptonote_core_headers
+set(cryptonote_core_headers)
+
+set(cryptonote_core_private_headers
   account.h
   account_boost_serialization.h
   blockchain_storage.h
@@ -58,9 +60,12 @@ set(cryptonote_core_headers
   tx_pool.h
   verification_context.h)
 
+bitmonero_private_headers(cryptonote_core
+  ${crypto_private_headers})
 bitmonero_add_library(cryptonote_core
   ${cryptonote_core_sources}
-  ${cryptonote_core_headers})
+  ${cryptonote_core_headers}
+  ${cryptonote_core_private_headers})
 target_link_libraries(cryptonote_core
   PUBLIC
     common
diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
index fdf6d697c..3fbac07ed 100644
--- a/src/daemon/CMakeLists.txt
+++ b/src/daemon/CMakeLists.txt
@@ -29,7 +29,9 @@
 set(daemon_sources
   daemon.cpp)
 
-set(daemon_headers
+set(daemon_headers)
+
+set(daemon_private_headers
   daemon_commands_handler.h
 
   # cryptonote_protocol
@@ -48,9 +50,12 @@ set(daemon_headers
   ../p2p/p2p_protocol_defs.h
   ../p2p/stdafx.h)
 
+bitmonero_private_headers(daemon
+  ${daemon_private_headers})
 bitmonero_add_executable(daemon
   ${daemon_sources}
-  ${daemon_headers})
+  ${daemon_headers}
+  ${daemon_private_headers})
 target_link_libraries(daemon
   PRIVATE
     rpc
diff --git a/src/miner/CMakeLists.txt b/src/miner/CMakeLists.txt
index 7f8669665..1c26e759e 100644
--- a/src/miner/CMakeLists.txt
+++ b/src/miner/CMakeLists.txt
@@ -29,14 +29,19 @@
 set(simpleminer_sources
   simpleminer.cpp)
 
-set(simpleminer_headers
+set(simpleminer_headers)
+
+set(simpleminer_private_headers
   simpleminer.h
   simpleminer_protocol_defs.h
   target_helper.h)
 
+bitmonero_private_headers(simpleminer
+  ${simpleminer_private_headers})
 bitmonero_add_executable(simpleminer
   ${simpleminer_sources}
-  ${simpleminer_headers})
+  ${simpleminer_headers}
+  ${simpleminer_private_headers})
 target_link_libraries(simpleminer
   PRIVATE
     cryptonote_core
diff --git a/src/mnemonics/CMakeLists.txt b/src/mnemonics/CMakeLists.txt
index 845856538..4f2c36f4e 100644
--- a/src/mnemonics/CMakeLists.txt
+++ b/src/mnemonics/CMakeLists.txt
@@ -29,7 +29,9 @@
 set(mnemonics_sources
   electrum-words.cpp)
 
-set(mnemonics_headers
+set(mnemonics_headers)
+
+set(mnemonics_private_headers
   electrum-words.h
   english.h
   japanese.h
@@ -39,9 +41,12 @@ set(mnemonics_headers
   singleton.h
   spanish.h)
 
+bitmonero_private_headers(mnemonics
+  ${mnemonics_private_headers})
 bitmonero_add_library(mnemonics
   ${mnemonics_sources}
-  ${mnemonics_headers})
+  ${mnemonics_headers}
+  ${mnemonics_private_headers})
 target_link_libraries(mnemonics
   PRIVATE
     ${Boost_SYSTEM_LIBRARY})
diff --git a/src/rpc/CMakeLists.txt b/src/rpc/CMakeLists.txt
index 31efe7d4c..ba71c8e63 100644
--- a/src/rpc/CMakeLists.txt
+++ b/src/rpc/CMakeLists.txt
@@ -29,14 +29,19 @@
 set(rpc_sources
   core_rpc_server.cpp)
 
-set(rpc_headers
+set(rpc_headers)
+
+set(rpc_private_headers
   core_rpc_server.h
   core_rpc_server_commands_defs.h
   core_rpc_server_error_codes.h)
 
+bitmonero_private_headers(rpc
+  ${rpc_private_headers})
 bitmonero_add_library(rpc
   ${rpc_sources}
-  ${rpc_headers})
+  ${rpc_headers}
+  ${rpc_private_headers})
 target_link_libraries(rpc
   PRIVATE
     cryptonote_core
diff --git a/src/simplewallet/CMakeLists.txt b/src/simplewallet/CMakeLists.txt
index 310efc2f1..682e660da 100644
--- a/src/simplewallet/CMakeLists.txt
+++ b/src/simplewallet/CMakeLists.txt
@@ -30,13 +30,18 @@ set(simplewallet_sources
   simplewallet.cpp
   password_container.cpp)
 
-set(simplewallet_headers
+set(simplewallet_headers)
+
+set(simplewallet_private_headers
   simplewallet.h
   password_container.h)
 
+bitmonero_private_headers(simplewallet
+  ${simplewallet_private_headers})
 bitmonero_add_executable(simplewallet
   ${simplewallet_sources}
-  ${simplewallet_headers})
+  ${simplewallet_headers}
+  ${simplewallet_private_headers})
 target_link_libraries(simplewallet
   PRIVATE
     wallet
diff --git a/src/wallet/CMakeLists.txt b/src/wallet/CMakeLists.txt
index d7fae541d..e32d86a59 100644
--- a/src/wallet/CMakeLists.txt
+++ b/src/wallet/CMakeLists.txt
@@ -30,16 +30,21 @@ set(wallet_sources
   wallet2.cpp
   wallet_rpc_server.cpp)
 
-set(wallet_headers
+set(wallet_headers)
+
+set(wallet_private_headers
   wallet2.h
   wallet_errors.h
   wallet_rpc_server.h
   wallet_rpc_server_commands_defs.h
   wallet_rpc_server_error_codes.h)
 
+bitmonero_private_headers(wallet
+  ${wallet_private_headers})
 bitmonero_add_library(wallet
   ${wallet_sources}
-  ${wallet_headers})
+  ${wallet_headers}
+  ${wallet_private_headers})
 target_link_libraries(wallet
   PUBLIC
     cryptonote_core