13
13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
# See the License for the specific language governing permissions and
15
15
# limitations under the License.
16
-
17
- LIBCMT_VERSION ?=0.0.0
18
-
19
- INSTALL_FILE = install -m0644
20
- INSTALL_EXEC = install -m0755
21
-
22
- # paths
23
- PREFIX = /usr
24
- TARGET_PREFIX ?= $(PREFIX )
25
-
26
16
TOOLCHAIN_PREFIX ?= riscv64-linux-gnu-
27
17
TARGET_CC := $(TOOLCHAIN_PREFIX ) gcc
28
18
TARGET_AR := $(TOOLCHAIN_PREFIX ) ar
@@ -65,7 +55,7 @@ libcmt_SRC := \
65
55
src/util.c \
66
56
src/io.c
67
57
68
- libcmt_OBJDIR := build/lib
58
+ libcmt_OBJDIR := build/riscv64
69
59
libcmt_OBJ := $(patsubst % .c,$(libcmt_OBJDIR ) /% .o,$(libcmt_SRC ) )
70
60
libcmt_LIB := $(libcmt_OBJDIR ) /libcmt.a
71
61
libcmt_SO := $(libcmt_OBJDIR ) /libcmt.so
@@ -81,19 +71,64 @@ $(libcmt_SO): $(libcmt_OBJ)
81
71
$(TARGET_CC ) -shared -o $@ $^
82
72
83
73
libcmt : $(libcmt_LIB ) $(libcmt_SO )
74
+ install-run : $(libcmt_SO )
75
+ mkdir -p $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib
76
+ cp -f $(libcmt_SO ) $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib
77
+
84
78
install : $(libcmt_LIB ) $(libcmt_SO ) build/ffi.h
85
79
mkdir -p $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib
86
- cp -f $(libcmt_LIB ) $(libcmt_SO ) $( TARGET_DESTDIR )$(TARGET_PREFIX ) /lib
80
+ cp -f $(libcmt_LIB ) $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib
87
81
mkdir -p $(TARGET_DESTDIR )$(TARGET_PREFIX ) /include/libcmt/
88
82
cp -f include/libcmt/* .h $(TARGET_DESTDIR )$(TARGET_PREFIX ) /include/libcmt/
89
83
cp -f build/ffi.h $(TARGET_DESTDIR )$(TARGET_PREFIX ) /include/libcmt/
90
84
mkdir -p $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib/pkgconfig
91
- sed -e ' s|@ARG_PREFIX@|$(TARGET_PREFIX)|g' src/libcmt.pc > $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib/pkgconfig/libcmt.pc
92
-
93
- debian-package : install
94
- mkdir -p $(TARGET_DESTDIR ) /DEBIAN
95
- sed ' s|ARG_VERSION|$(LIBCMT_VERSION)|g;' tools/template/cross-control.template > $(TARGET_DESTDIR ) /DEBIAN/control
96
- dpkg-deb -Zxz --root-owner-group --build $(TARGET_DESTDIR ) $(LIBCMT_DEB_FILENAME )
85
+ sed -e ' s|@PREFIX@|$(TARGET_PREFIX)|g' \
86
+ tools/libcmt.pc.in > $(TARGET_DESTDIR )$(TARGET_PREFIX ) /lib/pkgconfig/libcmt.pc
87
+
88
+ # requires either install-run or install
89
+ debian-package :
90
+ mkdir -p $(dir $(DEB_FILENAME ) )
91
+ dpkg-deb -Zxz --root-owner-group --build $(TARGET_DESTDIR ) $(DEB_FILENAME )
92
+
93
+ $(TARGET_DESTDIR ) /DEBIAN/control : tools/control.in
94
+ mkdir -p $(@D )
95
+ sed -e ' s|@PACKAGE@|$(ARG_PACKAGE)|' \
96
+ -e ' s|@VERSION@|$(ARG_VERSION)|' \
97
+ -e ' s|@ARCHITECTURE@|$(ARG_ARCHITECTURE)|' \
98
+ -e ' s|@PROVIDES@|$(ARG_PROVIDES)|' \
99
+ -e ' s|@DESCRIPTION@|$(ARG_DESCRIPTION)|' \
100
+ $< > $@
101
+
102
+ # debian package variants
103
+ libcmt.deb :
104
+ $(MAKE ) $(TARGET_DESTDIR ) /DEBIAN/control \
105
+ ARG_PACKAGE=libcmt \
106
+ ARG_VERSION=0.0.1 \
107
+ ARG_ARCHITECTURE=riscv64 \
108
+ ARG_PROVIDES=libcmt \
109
+ ARG_SECTION=libs \
110
+ ARG_DESCRIPTION=" Libcmt runtime"
111
+ $(MAKE ) debian-package DEB_FILENAME=build/deb/$@
112
+
113
+ libcmt-dev.deb :
114
+ $(MAKE ) $(TARGET_DESTDIR ) /DEBIAN/control \
115
+ ARG_PACKAGE=libcmt-dev \
116
+ ARG_VERSION=0.0.1 \
117
+ ARG_ARCHITECTURE=any \
118
+ ARG_PROVIDES=libcmt-dev \
119
+ ARG_SECTION=devel \
120
+ ARG_DESCRIPTION=" Libcmt native libraries and header files"
121
+ $(MAKE ) debian-package DEB_FILENAME=build/deb/$@
122
+
123
+ libcmt-dev-riscv64-cross.deb :
124
+ $(MAKE ) $(TARGET_DESTDIR ) /DEBIAN/control \
125
+ ARG_PACKAGE=libcmt \
126
+ ARG_VERSION=0.0.1 \
127
+ ARG_ARCHITECTURE=riscv64 \
128
+ ARG_PROVIDES=libcmt \
129
+ ARG_SECTION=devel \
130
+ ARG_DESCRIPTION=" Libcmt cross libraries and header files"
131
+ $(MAKE ) debian-package DEB_FILENAME=build/deb/$@
97
132
98
133
# -------------------------------------------------------------------------------
99
134
mock_SRC := \
@@ -259,4 +294,5 @@ distclean: clean
259
294
260
295
OBJ := $(mock_OBJ ) $(libcmt_OBJ ) $(examples_OBJ ) $(tools_OBJ )
261
296
297
+ .PHONY : install
262
298
-include $(OBJ :% .o=% .d)
0 commit comments