Browse Source

CMake: Change MODULE to SHARED in iOS build.

For some reason, specifying a library as SHARED causes Xcode to refuse to build, even on the most basic of projects. There's no practical side-effect for this change besides on Windows, which is why it's restricted to the iOS build.
Donny Lawrence 6 years ago
parent
commit
9e9d0684d6

+ 1 - 1
contrib/src/rplight/CMakeLists.txt

@@ -37,7 +37,7 @@ add_library(p3rplight STATIC ${P3RPLIGHT_HEADERS} ${P3RPLIGHT_SOURCES})
 target_link_libraries(p3rplight p3contribbase)
 target_link_libraries(p3rplight p3contribbase)
 target_interrogate(p3rplight ALL)
 target_interrogate(p3rplight ALL)
 
 
-if(MODULE_TYPE STREQUAL "MODULE")
+if(MODULE_TYPE STREQUAL "MODULE" OR MODULE_TYPE STREQUAL "SHARED")
   # Because it's STATIC (see above), we need to make it PIC so it can link into
   # Because it's STATIC (see above), we need to make it PIC so it can link into
   # a Python module
   # a Python module
   set_target_properties(p3rplight PROPERTIES POSITION_INDEPENDENT_CODE ON)
   set_target_properties(p3rplight PROPERTIES POSITION_INDEPENDENT_CODE ON)

+ 7 - 3
dtool/LocalSetup.cmake

@@ -145,9 +145,13 @@ check_cxx_compiler_flag(-msse2 HAVE_SSE2)
 # Also set the library type used for "modules" appropriately.
 # Also set the library type used for "modules" appropriately.
 if(BUILD_SHARED_LIBS)
 if(BUILD_SHARED_LIBS)
   set(LINK_ALL_STATIC OFF)
   set(LINK_ALL_STATIC OFF)
-  set(MODULE_TYPE "MODULE"
-    CACHE INTERNAL "" FORCE)
-
+  if(IOS)
+    set(MODULE_TYPE "SHARED"
+      CACHE INTERNAL "" FORCE)
+  else()
+    set(MODULE_TYPE "MODULE"
+      CACHE INTERNAL "" FORCE)
+  endif()
 else()
 else()
   set(LINK_ALL_STATIC ON)
   set(LINK_ALL_STATIC ON)
   set(MODULE_TYPE "STATIC"
   set(MODULE_TYPE "STATIC"

+ 1 - 1
pandatool/src/pandatoolbase/CMakeLists.txt

@@ -21,7 +21,7 @@ add_library(p3pandatoolbase STATIC ${P3PANDATOOLBASE_HEADERS} ${P3PANDATOOLBASE_
 target_link_libraries(p3pandatoolbase panda)
 target_link_libraries(p3pandatoolbase panda)
 
 
 # ptloader - a module - may need to link in libraries in this package, so:
 # ptloader - a module - may need to link in libraries in this package, so:
-if(MODULE_TYPE STREQUAL "MODULE")
+if(MODULE_TYPE STREQUAL "MODULE" OR MODULE_TYPE STREQUAL "SHARED")
   set_target_properties(p3pandatoolbase PROPERTIES
   set_target_properties(p3pandatoolbase PROPERTIES
     POSITION_INDEPENDENT_CODE ON
     POSITION_INDEPENDENT_CODE ON
     INTERFACE_POSITION_INDEPENDENT_CODE ON)
     INTERFACE_POSITION_INDEPENDENT_CODE ON)