diff --git "a/LLVM Parallel Universe Project/\345\217\202\344\270\216\350\264\241\347\214\256\346\214\207\345\257\274.md" "b/LLVM Parallel Universe Project/\345\217\202\344\270\216\350\264\241\347\214\256\346\214\207\345\257\274.md" index 5a9c10f708e76e1e3d97c033d8adcc2dfb96c6b9..e085fe8cf93d1bac7f3ec71a570133ba65a21b79 100644 --- "a/LLVM Parallel Universe Project/\345\217\202\344\270\216\350\264\241\347\214\256\346\214\207\345\257\274.md" +++ "b/LLVM Parallel Universe Project/\345\217\202\344\270\216\350\264\241\347\214\256\346\214\207\345\257\274.md" @@ -59,9 +59,11 @@ git format-patch HEAD^^ // 基于最近两个commit做patch * 如果已获得两个或两个以上[LLVM平行宇宙项目commiters](https://gitee.com/cf-zhao/compiler-docs/blob/master/LLVM%20Parallel%20Universe%20Project/%E5%8F%82%E4%B8%8E%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%AF%BC.md#4llvm%E5%B9%B3%E8%A1%8C%E5%AE%87%E5%AE%99%E9%A1%B9%E7%9B%AEcommiters%E6%8C%81%E7%BB%AD%E5%A2%9E%E5%8A%A0%E4%B8%AD)的`lgtm`,则可以将PR题目中的`[WIP]`删去。 * 最后,寻求相关软件包的maintainer/committer检视并合入。 -### 3、问题修复典型方法建议 +### 3 问题修复典型方法建议 本章包含通性问题的典型修复方法,建议修复相似问题时采用。如果您发现修复方法不妥,请劳烦协助修复,感谢! -#### 3.1、编译器在spec文件写死 +#### 3.1 构建脚本不支持切换到Clang +##### 3.1.1 编译器在spec文件写死 + 如果spec文件中写死gcc,如: ```abap gcc -Wall -fpie $RPM_OPT_FLAGS $CFLAGS $RPM_LD_FLAGS $LDFLAGS ifenslave.c -o ifenslave @@ -71,8 +73,9 @@ gcc -Wall -fpie $RPM_OPT_FLAGS $CFLAGS $RPM_LD_FLAGS $LDFLAGS ifenslave.c -o ife %{__cc} -Wall -fpie $RPM_OPT_FLAGS $CFLAGS $RPM_LD_FLAGS $LDFLAGS ifenslave.c -o ifenslave ``` -#### 3.2、问题修复示例 -如果Makefile已设置编译器类型: CC=gcc,CXX=g++,可在spec设置CC、CXX值,传递给Makefile覆盖原来的值,如: +##### 3.1.2 编译器在Makefile文件写死 + +- 如果Makefile已设置编译器类型: CC=gcc,CXX=g++,可在spec设置CC、CXX值,传递给Makefile覆盖原来的值,如: ``` # Makefile @@ -95,6 +98,31 @@ spec修改为: %endif make %{?make_opts} ``` +##### 3.1.3 CFLAGS在CMakeLists.txt文件写死 + +``` +# CMakeLists.txt + +set(CMAKE_C_FLAGS "-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -fPIE") +``` +修改为: +``` +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -fPIE") +``` +判断编译器决定是否传参给CFLAGS: +``` +# spec + +%cmake -DDEBUG=ON ../ +``` +修改为: +``` +%if "%toolchain" == "clang" +%global cmake_opts -DCMAKE_C_FLAGS="${CFLAGS}" +%endif + +%cmake -DDEBUG=ON %{?cmake_opts} ../ +``` ### 4、LLVM平行宇宙项目commiters(持续增加中) - 赵 川峰[@cf-zhao](https://gitee.com/cf-zhao) 邮箱: zhaochuanfeng@huawei.com