File: CMakeLists-build-shared-lib.patch

package info (click to toggle)
mojoshader 0.0~hg1314%2Bgit20250606.93d9d45%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,228 kB
  • sloc: ansic: 52,725; perl: 151; sh: 17; makefile: 11
file content (116 lines) | stat: -rw-r--r-- 4,373 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 99946ee..e8935ca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,6 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 3.12.0)
 PROJECT(MojoShader)
+CMAKE_POLICY(SET CMP0063 NEW)
 
 # !!! FIXME: can we lowercase this file, if nothing else?
 
@@ -29,45 +30,7 @@ INCLUDE_DIRECTORIES(.)
 # This was a Mercurial thing. In Git, it's always -1.
 SET(MOJOSHADER_VERSION -1)
 
-# If Git is installed and we are in a git repository, include the changeset as version information.
-FIND_PROGRAM(GIT git DOC "Path to git command line app: https://git-scm.com/")
-IF(NOT GIT)
-    MESSAGE(STATUS "Git not found. You can go on, but version info will be wrong.")
-    SET(MOJOSHADER_CHANGESET "???")
-ELSE(NOT GIT)
-    MARK_AS_ADVANCED(GIT)
-
-    # !!! FIXME: this didn't actually use the GIT variable...
-
-    # See if we are in a git repository.
-    EXECUTE_PROCESS(
-        COMMAND git rev-parse --show-toplevel
-        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
-        OUTPUT_VARIABLE MOJOSHADER_GIT_TOPLEVEL_DIR
-        RESULT_VARIABLE GITVERSION_RC
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-    )
-    IF(NOT GITVERSION_RC EQUAL 0)
-        MESSAGE(STATUS "Git repository not found. You can go on, but version info will be wrong.")
-        SET(MOJOSHADER_CHANGESET "???")
-    ELSE(NOT GITVERSION_RC EQUAL 0)
-        # Query the changeset.
-        EXECUTE_PROCESS(
-            COMMAND git rev-list HEAD~..
-            WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
-            RESULT_VARIABLE GITVERSION_RC
-            OUTPUT_VARIABLE MOJOSHADER_GIT_CHANGESET
-            ERROR_QUIET
-            OUTPUT_STRIP_TRAILING_WHITESPACE
-        )
-        IF(NOT GITVERSION_RC EQUAL 0)
-            SET(MOJOSHADER_CHANGESET "???")
-        ELSE(NOT GITVERSION_RC EQUAL 0)
-            SET(MOJOSHADER_CHANGESET "git-${MOJOSHADER_GIT_CHANGESET}")
-        ENDIF(NOT GITVERSION_RC EQUAL 0)
-    ENDIF(NOT GITVERSION_RC EQUAL 0)
-ENDIF(NOT GIT)
+SET(MOJOSHADER_CHANGESET "???")
 
 WRITE_FILE(
     "${CMAKE_CURRENT_SOURCE_DIR}/mojoshader_version.h"
@@ -139,7 +102,7 @@ ENDIF(NOT PROFILE_ARB1_NV)
 IF(NOT PROFILE_METAL)
     ADD_DEFINITIONS(-DSUPPORT_PROFILE_METAL=0)
 ELSE(NOT PROFILE_METAL)
-    SET(LOBJC -lobjc)
+    SET(LOBJC )
 ENDIF(NOT PROFILE_METAL)
 IF(NOT PROFILE_SPIRV)
     ADD_DEFINITIONS(-DSUPPORT_PROFILE_SPIRV=0)
@@ -167,7 +130,7 @@ IF(XNA4_VERTEXTEXTURE)
     ADD_DEFINITIONS(-DMOJOSHADER_XNA4_VERTEX_TEXTURES)
 ENDIF(XNA4_VERTEXTEXTURE)
 
-ADD_LIBRARY(mojoshader
+ADD_LIBRARY(mojoshader OBJECT
     mojoshader.c
     mojoshader_common.c
     mojoshader_opengl.c
@@ -182,6 +145,8 @@ ADD_LIBRARY(mojoshader
     profiles/mojoshader_profile_spirv.c
     profiles/mojoshader_profile_common.c
 )
+SET_TARGET_PROPERTIES(mojoshader PROPERTIES POSITION_INDEPENDENT_CODE ON C_VISIBILITY_PRESET hidden)
+TARGET_COMPILE_DEFINITIONS(mojoshader PRIVATE "DECLSPEC=__attribute__((visibility(\"default\")))")
 IF(EFFECT_SUPPORT)
     TARGET_SOURCES(mojoshader PRIVATE
         mojoshader_effects.c
@@ -269,6 +234,30 @@ IF(COMPILER_SUPPORT)
     TARGET_LINK_LIBRARIES(mojoshader-compiler mojoshader ${LIBM} ${LOBJC} ${CARBON_FRAMEWORK})
 ENDIF(COMPILER_SUPPORT)
 
+ADD_LIBRARY(mojoshader-static STATIC $<TARGET_OBJECTS:mojoshader>)
+SET_TARGET_PROPERTIES(mojoshader-static PROPERTIES OUTPUT_NAME mojoshader)
+
+ADD_LIBRARY(mojoshader-shared SHARED $<TARGET_OBJECTS:mojoshader>)
+SET_TARGET_PROPERTIES(mojoshader-shared PROPERTIES OUTPUT_NAME mojoshader)
+SET_TARGET_PROPERTIES(mojoshader-shared PROPERTIES VERSION "${MOJOSHADER_VERSION}" SOVERSION 0)
+TARGET_LINK_LIBRARIES(mojoshader-shared ${LIBM})
+
+INCLUDE(GNUInstallDirs)
+INSTALL(
+    TARGETS mojoshader-static mojoshader-shared
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
+    LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
+)
+INSTALL(
+    FILES mojoshader.h mojoshader_effects.h mojoshader_version.h
+    DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/mojoshader"
+)
+CONFIGURE_FILE("debian/mojoshader.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/mojoshader.pc" @ONLY)
+INSTALL(
+  FILES "${CMAKE_CURRENT_BINARY_DIR}/mojoshader.pc"
+  DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig"
+)
+
 # Unit tests...
 IF(COMPILER_SUPPORT)
     ADD_CUSTOM_TARGET(