Skip to content

Commit a0b945f

Browse files
authored
Merge pull request #613 from hoytak/20-01-symbol-stripping
Added stripping of CoreML symbols
2 parents 309b5b7 + eead985 commit a0b945f

File tree

3 files changed

+56
-20
lines changed

3 files changed

+56
-20
lines changed

CMakeLists.txt

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,30 +40,30 @@ include_directories(
4040
deps/pybind11/include
4141
mlmodel/src
4242
${PYTHON_INCLUDE_DIRS}
43-
)
43+
)
4444

4545
set(CMAKE_CXX_FLAGS " \
46-
${CMAKE_CXX_FLAGS} \
47-
--std=c++14 \
46+
${CMAKE_CXX_FLAGS} \
47+
--std=c++14 \
4848
")
4949

5050
if(APPLE)
5151
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc ")
5252
endif()
5353

5454
set(CMAKE_EXE_LINKER_FLAGS " \
55-
${CMAKE_EXE_LINKER_FLAGS} \
56-
--std=c++14 \
55+
${CMAKE_EXE_LINKER_FLAGS} \
56+
--std=c++14 \
5757
")
5858
set(CMAKE_MODULE_LINKER_FLAGS " \
59-
${CMAKE_MODULE_LINKER_FLAGS} \
60-
--std=c++14 \
59+
${CMAKE_MODULE_LINKER_FLAGS} \
60+
--std=c++14 \
6161
")
6262
set(CMAKE_SHARED_LINKER_FLAGS " \
63-
${CMAKE_SHARED_LINKER_FLAGS} \
64-
--std=c++14 \
63+
${CMAKE_SHARED_LINKER_FLAGS} \
64+
--std=c++14 \
6565
")
66-
66+
6767
add_library(caffeconverter
6868
SHARED
6969
caffeconverter/CaffeConverterLib.cpp
@@ -99,17 +99,17 @@ add_library(caffeconverter
9999
caffeconverter/Caffe/Reshape.cpp
100100
deps/caffe/src/caffe/proto/caffe.pb.cc
101101
deps/caffe/src/caffe/util/upgrade_proto.cpp
102-
)
102+
)
103103

104104
target_compile_definitions(caffeconverter
105105
PRIVATE
106106
CPU_ONLY=1
107-
)
107+
)
108108

109109
target_link_libraries(caffeconverter
110110
mlmodel
111111
libprotobuf
112-
)
112+
)
113113

114114
if (APPLE)
115115
# Allow Python to be found at runtime instead of compile/link time
@@ -119,21 +119,27 @@ endif()
119119

120120
file(COPY ${CMAKE_SOURCE_DIR}/README.rst DESTINATION ${CMAKE_BINARY_DIR})
121121
file(COPY ${CMAKE_SOURCE_DIR}/coremltools/__init__.py
122-
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
122+
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
123123
file(COPY ${CMAKE_SOURCE_DIR}/coremltools/__main__.py
124-
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
124+
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
125125
set(copy_dirs _deps _scripts converters graph_visualization models proto)
126126
foreach(cdir IN ITEMS ${copy_dirs})
127127
file(COPY ${CMAKE_SOURCE_DIR}/coremltools/${cdir}
128-
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
128+
DESTINATION ${CMAKE_BINARY_DIR}/coremltools)
129129
endforeach()
130130

131+
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
132+
set(_additional_caffeconverter_command COMMAND strip -x ${PROJECT_SOURCE_DIR}/coremltools/libcaffeconverter.so)
133+
endif()
134+
131135
add_custom_command(
132136
TARGET caffeconverter
133137
POST_BUILD
134138
COMMAND cp $<TARGET_FILE:caffeconverter> ${PROJECT_SOURCE_DIR}/coremltools/libcaffeconverter.so
139+
${_additional_caffeconverter_command}
135140
)
136141

142+
137143
find_library(CORE_VIDEO CoreVideo)
138144
find_library(CORE_ML CoreML)
139145
find_library(FOUNDATION Foundation)
@@ -171,16 +177,33 @@ if (APPLE AND CORE_VIDEO AND CORE_ML AND FOUNDATION)
171177
${PYTHON_LIBRARIES}
172178
)
173179

174-
if (APPLE)
175-
# Allow Python to be found at runtime instead of compile/link time
176-
# This is apparently the default on Linux
177-
set_target_properties(coremlpython PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
180+
if(APPLE)
181+
set(osx_export_file ${CMAKE_SOURCE_DIR}/coremlpython/exported_symbols_osx.ver)
182+
set_property(TARGET coremlpython APPEND PROPERTY LINK_DEPENDS "${osx_export_file}")
183+
set_property(TARGET coremlpython APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-exported_symbols_list,${osx_export_file} ")
184+
185+
# Allow Python to be found at runtime instead of compile/link time
186+
# This is apparently the default on Linux
187+
set_property(TARGET coremlpython APPEND_STRING PROPERTY LINK_FLAGS "-undefined dynamic_lookup")
188+
189+
else()
190+
set(linux_export_file coremlpython/exported_symbols_linux.ver)
191+
set_property(TARGET coremlpython APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${linux_export_file} ")
192+
endif()
193+
194+
set_property(TARGET coremlpython APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-dead_strip")
195+
196+
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
197+
set(_additional_libcoremlpython_command
198+
COMMAND strip -x ${PROJECT_SOURCE_DIR}/coremltools/libcoremlpython.so
199+
)
178200
endif()
179201

180202
add_custom_command(
181203
TARGET coremlpython
182204
POST_BUILD
183205
COMMAND cp $<TARGET_FILE:coremlpython> ${PROJECT_SOURCE_DIR}/coremltools/libcoremlpython.so
206+
${_additional_libcoremlpython_command}
184207
)
185208

186209
else()
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
{
3+
global:
4+
_PyInit_*;
5+
_init*;
6+
7+
local:
8+
*;
9+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
_PyInit_*
3+
_init*
4+

0 commit comments

Comments
 (0)