Skip to content

Commit 46fd84a

Browse files
committed
3700x: refactory well done
1 parent 5c6c4f6 commit 46fd84a

25 files changed

+965
-152
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,4 @@ t.lua
4949
*/*.DotSettings.user
5050
/staticblock-poc/target/
5151
/unity-classes/target/
52+
.AppleDouble/*

.vimrc

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1 @@
1-
"let g:EasyGrepFilesToExclude = "*.bak,*~,cscope.*,*.a,*.o,*.pyc,*.bak,*.c, build/*,tags"
2-
let g:EasyGrepFilesToExclude=".git,build,tags,*.bak,*.o,*.s,*.exe"
3-
let g:EasyGrepRoot = "search:.git"
4-
set wildignore=*.swp,.gitignore
5-
"https://gist.github.com/seyDoggy/613f2648cebc6c7b456f
6-
"unlet g:ctrlp_custom_ignore
7-
"unlet g:ctrlp_user_command
8-
" set your own custom ignore settings
9-
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.o,tags
10-
let g:ctrlp_custom_ignore = {
11-
\ 'dir': '\.git$\|\.hg$\|\.svn$\|obj$\|bin$\|bower_components$\|build$\|node_modules$\|project_files$\|test$|tags$',
12-
\ 'file': '\.out$\|\.so$\|\.dll$\|\.out$|\.o$|\.pdb$|\.cache$|tags$' }
13-
" clean ctrlp cache
14-
" CtrlPClearCache
15-
" rm -rf ~/.cache/ctrlp/
16-
17-
"http://harttle.com/2015/11/17/vim-buffer.html
18-
set wildmenu wildmode=full
19-
set wildchar=<Tab> wildcharm=<C-Z>
20-
21-
" http://timothyqiu.com/archives/using-clang-complete-for-c-cplusplus-in-vim/
22-
let g:clang_c_options = ' -std=c99 -I/usr/include/lua5.1/ -I$PWD/include/ '
23-
let g:clang_cpp_options = ' -std=c++11 -stdlib=libc++ -I$PWD/include/ -I/usr/local/include/ -I/usr/include -I/usr/include/c++/4.9 -I/usr/include/i386-linux-gnu/c++/4.9 '
24-
let g:clang_compilation_database = './build'
25-
let g:clang_cpp_completeopt = 'longest,menuone,preview'
26-
" let g:clang_include_sysheaders = 1
27-
28-
"http://stackoverflow.com/questions/18158772/how-to-add-c11-support-to-syntastic-vim-plugin
29-
"let g:syntastic_cpp_compiler_options = " -std=c++11 -stdlib=libc++ -I/usr/include/lua5.1/
30-
"-I/home/leeyg/develop/cpp-gc/contrib/colors "
31-
let g:syntastic_cpp_compiler="clang++"
32-
let g:syntastic_cpp_compiler_options = " -std=c++11 -stdlib=libc++ "
33-
let g:syntastic_cpp_include_dirs=['-I$PWD/include/', '-I /usr/include', '-I/usr/local/include/', '-I/usr/include/c++/4.9', '-I/usr/include/i386-linux-gnu/c++/4.9' ]
34-
35-
let g:syntastic_c_compiler="c"
36-
let g:syntastic_c_compiler_options = " -std=gnu99 "
37-
let g:syntastic_c_include_dirs=['-I$PWD/include/', '-I/usr/include/lua5.1', '-I./contrib/lua51-ext/']
38-
39-
" https://superuser.com/questions/77800/vims-autocomplete-how-to-prevent-vim-to-read-some-include-files
40-
set complete-=i
41-
42-
let g:clang_complete_copen=1
43-
let g:clang_periodic_quickfix=1
44-
let g:clang_snippets=1
45-
let g:clang_close_preview=1
46-
let g:clang_use_library=1
47-
48-
" dont highlight inactive window
49-
let g:diminactive_use_colorcolumn = 0
50-
let g:ctrlp_clear_cache_on_exit = 1
51-
let g:tagbar_ctags_bin = "ctags"
52-
53-
nmap <leader>tr :CtrlPClearCache<CR>
54-
nmap <leader>tm :LeaderfFunction<CR>
55-
56-
autocmd BufNewFile,BufRead nlog.config set syntax=html
57-
58-
let g:ale_c_clang_executable = 'clang'
59-
let g:ale_cpp_clang_executable = 'clang'
60-
let g:ale_linters = {
61-
\ 'cpp': ['clangtidy'],
62-
\ 'c': ['clangtidy'],
63-
\}
64-
let g:ale_fixers={
65-
\ 'cpp': ['clang-format'],
66-
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
67-
\}
68-
69-
let g:ale_c_incs = [
70-
\ '.',
71-
\ g:git_dir,
72-
\ g:git_dir . '/src/',
73-
\ g:git_dir . '/include/',
74-
\ g:git_dir . '/utils/',
75-
\ g:git_dir . '/.xopt/include',
76-
\ '.xopt/include',
77-
\ 'contrib/lua51-ext',
78-
\ '/usr/include/lua5.1'
79-
\]
80-
call SetupC99Incs()
81-
1+
set filetype=bash

utils/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
target/*
2+
00/*
3+
.AppleDouble/*

utils/CMakeLists.txt

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
project(jni-jelper C)
3+
4+
set(JNI_HELPER_VERSION_MAJOR 2)
5+
set(JNI_HELPER_VERSION_MINOR 41)
6+
set(JNI_HELPER_VERSION_DATABASE 135)
7+
set(JNI_HELPER_VERSION_SOURCES_FILE 16)
8+
set(JNI_HELPER_VERSION ${RTAGS_VERSION_MAJOR}.${RTAGS_VERSION_MINOR}.${RTAGS_VERSION_DATABASE})
9+
set(JNI_HELPER_BINARY_ROOT_DIR ${PROJECT_BINARY_DIR})
10+
# aux_source_directory(. DIR_SRCS)
11+
12+
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
13+
#INCLUDE (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
14+
INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
15+
include(CheckCSourceCompiles)
16+
include(CheckFunctionExists)
17+
include(CheckIncludeFiles)
18+
include(CheckLibraryExists)
19+
include(CheckStructHasMember)
20+
include(CheckSymbolExists)
21+
include(CMakePackageConfigHelpers)
22+
include(GNUInstallDirs)
23+
24+
find_package(JNI REQUIRED)
25+
26+
configure_file(
27+
${PROJECT_SOURCE_DIR}/src/main/jni/include/config.h.cmake
28+
${PROJECT_SOURCE_DIR}/src/main/jni/include/config.h
29+
)
30+
31+
check_function_exists(vfork HAVE_VFORK)
32+
check_function_exists(vfork HAVE_FORK)
33+
check_function_exists(popen HAVE_POPEN)
34+
check_function_exists(bzero HAVE_BZERO)
35+
36+
test_big_endian(WORDS_BIGENDIAN)
37+
check_type_size(pid_t HAVE_PID_T)
38+
check_type_size(uint64_t HAVE_UINT64_T)
39+
check_type_size(uint32_t HAVE_UINT32_T)
40+
check_type_size(uint16_t HAVE_UINT16_T)
41+
check_type_size(uchar HAVE_UCHAR)
42+
check_type_size(uhort HAVE_USHORT)
43+
check_type_size(uint HAVE_UINT)
44+
check_type_size(ulong HAVE_ULONG)
45+
check_type_size(ulonglong HAVE_ULONGLONG)
46+
check_type_size(voidptr HAVE_VOIDPTR)
47+
48+
check_type_size(uint_t HAVE_UINT_T)
49+
50+
51+
set(FLAGS
52+
"${CMAKE_C_FLAGS}"
53+
"-Wall"
54+
"-Wno-unknown-pragmas "
55+
"-Wno-error=stringop-truncation -Wno-stringop-truncation"
56+
"-Wno-sign-compare"
57+
"-Wwrite-strings"
58+
"-Wno-unused"
59+
"-Wno-format-overflow"
60+
"-Wno-unused-variable"
61+
"-Wno-error=discarded-qualifiers"
62+
"-Wno-discarded-qualifiers"
63+
"-Wno-int-to-pointer-cast"
64+
"-Wno-pointer-to-int-cast"
65+
"-Wno-unused-variable"
66+
)
67+
list(JOIN FLAGS " " FLAGS2)
68+
message(FLAGS2=${FLAGS2})
69+
message(CMAkE_C_COMPILER_ID=${CMAkE_C_COMPILER_ID})
70+
message(CMAKE_COMPILER_IS_GNU=${CMAKE_COMPILER_IS_GNU})
71+
72+
if(CMAKE_C_COMPILER_ID MATCHES GNU)
73+
message(!!CMAKE_C_FLAGS=${CMAKE_C_FLAGS})
74+
#set(CMAKE_C_FLAGS "${FLAGS2}")
75+
set(CMAKE_C_FLAGS_DEBUG "-O2 -g")
76+
set(CMAKE_C_FLAGS_RELEASE "-O2 -g")
77+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage ${FLAGS2}")
78+
message(CMAKE_C_FLAGS=${CMAKE_C_FLAGS})
79+
endif()
80+
81+
if(CMAKE_COMPILER_IS_GNUCXX)
82+
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
83+
message(STATUS "optional:-std=c++11")
84+
endif(CMAKE_COMPILER_IS_GNUCXX)
85+
86+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
87+
set(CMAKE_CC 100)
88+
set(CMAKE_CC True)
89+
90+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 ")
91+
#option(USE_DEBUG "Use DEBUG" ON)
92+
if (NOT CMAKE_BUILD_TYPE)
93+
set(CMAKE_BUILD_TYPE Release)
94+
endif ()
95+
# Detect linux
96+
if (UNIX AND NOT APPLE)
97+
set(LINUX TRUE)
98+
endif ()
99+
100+
option(WITH_STATIC "build with static libraries." ON)
101+
option(WITH_EMBEDDED_SRC "build with embedded src, tests source." ON)
102+
103+
104+
set(JNI_SOURCE_FILES
105+
./src/main/jni/com_nci_utils_Helper.h
106+
./src/main/jni/com_nci_utils_Helper.c
107+
)
108+
109+
# 加入一个配置头文件,用于处理 CMake 对源码的设置
110+
add_library(helper SHARED ${JNI_SOURCE_FILES})
111+
# ...
112+
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
113+
add_definitions(-Wall -Werror)
114+
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
115+
add_definitions(-Wall -Werror)
116+
elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
117+
add_definitions(-Wall -Werror)
118+
endif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
119+
120+
#include_directories($ENV{JAVA_HOME}/include/linux)
121+
#include_directories($ENV{JAVA_HOME}/include)
122+
include_directories(${JNI_INCLUDE_DIRS})
123+
message(${JNI_INCLUDE_DIRS})
124+
125+

utils/Makefile

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
1-
.PHONY : build help build clean app vmargs touch jdkflags
21

2+
CFLAGS = -fPIC -shared \
3+
-I ${JAVA_HOME}/include/linux \
4+
-I ${JAVA_HOME}/include \
5+
6+
JNI_NAME=helper
37
git-dir := $(shell git rev-parse --show-toplevel | tr -d '\n')
48
JAVA_OPTS_INTERPRETED_MODE = -Xint #interpreted mode
59
JAVA_OPTS = -XX:+TieredCompilation -XX:TieredStopAtLevel=1
610
JAVA_OPTS = -Xint -Xshare:on -Xms256m -Xmx256m
7-
JAVA_OPTS = -Xms256m -Xmx256m
11+
JAVA_OPTS = -Xint -Xms256m -Xmx256m -Djdk.attach.allowAttachSelf -XX:-UseCompressedOops
12+
JAVA_OPTS = -Xint -Xms256m -Xmx256m -XX:-UseCompressedOops
813

14+
.PHONY: help
915
help:
1016
@echo "make [ build | classpath | touch | app | helloworld | clean | jmh | vmargs | jdkflags"
1117
@echo ". ./etc/vscode/activate"
1218

19+
.PHONY: build
1320
build:
1421
@./bin/cmp-src.sh target/javautils.jar ./src
1522
@free -h
1623

1724

1825
.PHONY: touch
1926
touch:
20-
@find ./src -name "*" -type f -exec touch {} \;
27+
@find ./src/main/java/com/nci/apps/ -name "*.java" -type f -exec touch {} \;
2128

2229
.PHONY: clean
2330
clean:
@@ -38,12 +45,17 @@ HelloWorld: build
3845
@echo
3946
@time java $(JAVA_OPTS_INTERPRETED_MODE) -cp $(shell cat cp.txt) com.nci.apps.HelloWorld
4047

48+
# TODO: @drip $(JAVA_OPTS) -cp $(shell cat ./etc/cp-buster-lxd.txt) com.nci.apps.App
4149
.PHONY: app
4250
app: build
4351
@echo '................ mvn exec:java -Dexec.mainClass="com.nci.apps.App" -Dexec.cleanupDaemonThreads=false'
4452
@echo '>>> ................ drip ..............................' | ~/conf/bash/hl_words.lua java drip END
45-
@time drip $(JAVA_OPTS) -cp $(shell cat cp.txt) com.nci.apps.App
53+
@time java $(JAVA_OPTS) -cp $(shell cat ./etc/cp-buster-lxd.txt) com.nci.apps.App
54+
@echo
4655
@echo '>>> ................ END ..............................' | ~/conf/bash/hl_words.lua java drip END
56+
@echo '................ mvn exec:java -Dexec.mainClass="com.nci.apps.App" -Dexec.cleanupDaemonThreads=false'
57+
@echo "................ JAVA_OPTS = ${JAVA_OPTS}"
58+
# @echo sudo -H ${JAVA_HOME}/bin/java $(JAVA_OPTS) -cp $(shell cat ./etc/cp-buster-lxd.txt) com.nci.apps.App
4759

4860
.PHONY: classpath
4961
classpath: build
@@ -52,4 +64,15 @@ classpath: build
5264
.PHONY: vmargs
5365
vmargs: build
5466
@java $(JAVA_OPTS) -cp $(shell cat cp.txt) com.nci.utils.IdentifyJvmArgs
67+
@echo
68+
@java -XX:+PrintFlagsFinal -version|grep UseCompressedOops
69+
70+
71+
build/lib$(JNI_NAME).so: src/main/jni/com_nci_utils_Helper.c
72+
cd build && make
73+
# $(CC) $(CFLAGS) -o $(JNI_NAME).so com_nci_utils_Helper.c
5574

75+
.PHONY: jni
76+
jni: build build/lib$(JNI_NAME).so
77+
test -d /usr/java/packages/lib || sudo mkdir -p /usr/java/packages/lib
78+
sudo cp -uv build/libhelper.so /usr/java/packages/lib/lib$(JNI_NAME).so

utils/bin/cmp-src.sh

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
target="$1"
44
dir="$2"
5+
gitdir=$(git rev-parse --show-toplevel 2>/dev/null)
56

67
fg_bright_yellow=''
78
fg_reset=''
@@ -13,17 +14,27 @@ echo_hl()
1314

1415
new_file_list=""
1516

17+
exec_mvn()
18+
{
19+
true && \
20+
cp -u src/main/java/com/nci/apps/mock/Test.java src/main/resources/ && \
21+
mvn --log-file $gitdir/mvn.log process-test-classes && touch $target
22+
23+
24+
}
25+
1626
run()
1727
{
1828
true && \
1929
echo_hl "found newer files: [$new_file_list]" && \
20-
mvn process-test-classes && touch $target
30+
cp -u src/main/java/com/nci/apps/mock/Test.java src/main/resources/ && \
31+
mvn --log-file $gitdir/mvn.log process-test-classes && touch $target
2132
exit 0
2233
}
2334

2435
LF='\n'
2536
! test -f $target && run && exit 0
26-
for file in "./pom.xml" $(find "$dir" -name "*.*")
37+
for file in "./pom.xml" $(find "$dir" -name "*.*" ! -name '*.c')
2738
do
2839
test "$file" -nt "$target" && new_file_list+=" $file"
2940
done
@@ -36,7 +47,8 @@ if test -n "$new_file_list"; then
3647
done
3748
echo -e "\n]${fg_reset}"
3849

39-
mvn process-test-classes && touch $target
50+
cp -u src/main/java/com/nci/apps/mock/Test.java src/main/resources/ && \
51+
mvn --log-file /tmp/mvn.log process-test-classes && touch $target
4052
exit 0
4153
fi
4254

0 commit comments

Comments
 (0)