@@ -5,10 +5,11 @@ execute_process(
5
5
COMMAND tr -d "\n "
6
6
OUTPUT_VARIABLE CURRENT_VERSION)
7
7
8
- project (meevax DESCRIPTION "A programmable programming language"
9
- HOMEPAGE_URL "https://github.com/yamacir-kit/meevax"
10
- LANGUAGES CXX
11
- VERSION ${CURRENT_VERSION} )
8
+ project (meevax
9
+ DESCRIPTION "A programmable programming language"
10
+ HOMEPAGE_URL "https://github.com/yamacir-kit/meevax"
11
+ LANGUAGES CXX
12
+ VERSION ${CURRENT_VERSION} )
12
13
13
14
include (GNUInstallDirs)
14
15
@@ -20,9 +21,9 @@ string(JOIN " " AGGRESSIVE_OPTIMIZATION_OPTIONS
20
21
)
21
22
22
23
set (CMAKE_CXX_EXTENSIONS OFF )
23
- set (CMAKE_CXX_FLAGS_DEBUG "-Og -gdwarf-4" ) # NOTE: The `-gdwarf-4` option is set due to the following issues with Clang 14 and Valgrind versions below 3.20: https://bugzilla.mozilla.org/show_bug.cgi?id=1758782
24
- set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
25
- set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG ${AGGRESSIVE_OPTIMIZATION_OPTIONS} " )
24
+ set (CMAKE_CXX_FLAGS_DEBUG "-Og -gdwarf-4" ) # NOTE: The `-gdwarf-4` option is set due to the following issues with Clang 14 and Valgrind versions below 3.20: https://bugzilla.mozilla.org/show_bug.cgi?id=1758782
25
+ set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
26
+ set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG ${AGGRESSIVE_OPTIMIZATION_OPTIONS} " )
26
27
set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gdwarf-4 -DNDEBUG" )
27
28
set (CMAKE_CXX_FLAGS "-Wall -Wextra -Wpedantic -pipe" )
28
29
set (CMAKE_CXX_STANDARD 17)
@@ -67,36 +68,27 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure/version.cpp ${CMAKE_CURRENT
67
68
68
69
add_library (kernel SHARED)
69
70
70
- add_library (${PROJECT_NAME} ::kernel ALIAS kernel)
71
-
72
71
file (GLOB_RECURSE ${PROJECT_NAME} _KERNEL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /src/*/*.cpp)
73
72
74
73
target_sources (kernel PRIVATE ${${PROJECT_NAME} _KERNEL_SOURCES})
75
74
76
- target_include_directories (kernel PUBLIC
77
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
78
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
79
-
80
- target_link_libraries (kernel PRIVATE ${CMAKE_DL_LIBS}
81
- PUBLIC gmp)
82
-
83
- set_target_properties (kernel PROPERTIES OUTPUT_NAME ${PROJECT_NAME} # Rename libkernel => libmeevax
84
- VERSION ${PROJECT_VERSION}
85
- SOVERSION ${PROJECT_VERSION_MAJOR}
86
- LINK_FLAGS_RELEASE -s)
87
-
88
- # ---- Target format -----------------------------------------------------------
89
-
90
- add_executable (format)
75
+ target_include_directories (kernel
76
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
77
+ PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
91
78
92
- target_sources (format PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src/format.cpp)
79
+ target_link_libraries (kernel
80
+ PRIVATE ${CMAKE_DL_LIBS}
81
+ PUBLIC gmp)
93
82
94
- target_link_libraries (format PRIVATE kernel)
83
+ set_target_properties (kernel PROPERTIES
84
+ OUTPUT_NAME ${PROJECT_NAME} # Rename libkernel => libmeevax
85
+ VERSION ${PROJECT_VERSION}
86
+ SOVERSION ${PROJECT_VERSION_MAJOR}
87
+ LINK_FLAGS_RELEASE -s)
95
88
96
89
# ---- Target basis ------------------------------------------------------------
97
90
98
91
add_custom_target (basis
99
- DEPENDS format
100
92
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR} /configure/basis.cmake)
101
93
102
94
# ---- Target shell ------------------------------------------------------------
@@ -109,8 +101,9 @@ target_sources(shell PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
109
101
110
102
target_link_libraries (shell PRIVATE kernel)
111
103
112
- set_target_properties (shell PROPERTIES OUTPUT_NAME ${PROJECT_NAME} # Rename shell => meevax
113
- LINK_FLAGS_RELEASE -s)
104
+ set_target_properties (shell PROPERTIES
105
+ OUTPUT_NAME ${PROJECT_NAME} # Rename shell => meevax
106
+ LINK_FLAGS_RELEASE -s)
114
107
115
108
# ---- CMake Package -----------------------------------------------------------
116
109
@@ -122,29 +115,30 @@ write_basic_package_version_file(
122
115
123
116
# ---- Target install ----------------------------------------------------------
124
117
125
- # /usr/lib/libmeevax
126
- install ( TARGETS kernel
127
- EXPORT ${PROJECT_NAME} -config
128
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
129
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
118
+ install ( # /usr/lib/libmeevax
119
+ TARGETS kernel
120
+ EXPORT ${PROJECT_NAME} -config
121
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
122
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
130
123
131
- # /usr/bin/meevax
132
- install ( TARGETS shell
133
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
124
+ install ( # /usr/bin/meevax
125
+ TARGETS shell
126
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
134
127
135
- # /usr/include/meevax
136
- install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /
137
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
128
+ install ( # /usr/include/meevax
129
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /
130
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
138
131
139
- # /usr/share/meevax/meevax-config.cmake
140
- install ( EXPORT ${PROJECT_NAME} -config
141
- EXPORT_LINK_INTERFACE_LIBRARIES
142
- DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME}
143
- NAMESPACE Meevax::)
132
+ install ( # /usr/share/meevax/meevax-config.cmake
133
+ EXPORT ${PROJECT_NAME} -config
134
+ EXPORT_LINK_INTERFACE_LIBRARIES
135
+ DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME}
136
+ NAMESPACE Meevax::)
144
137
145
138
# /usr/share/meevax/meevax-config-version.cmake
146
- install (FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config-version .cmake
147
- DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
139
+ install (
140
+ FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config-version .cmake
141
+ DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
148
142
149
143
# ---- Target package ----------------------------------------------------------
150
144
@@ -164,20 +158,22 @@ enable_testing()
164
158
165
159
find_program (${PROJECT_NAME} _MEMORY_CHECK_COMMAND valgrind)
166
160
167
- set (${PROJECT_NAME} _MEMORY_CHECK_COMMAND_OPTIONS --error-exitcode=1 # = EXIT_FAILURE)
168
- --leak-check=full
169
- --quiet
170
- --show-leak-kinds=all )
161
+ set (${PROJECT_NAME} _MEMORY_CHECK_OPTIONS
162
+ --error-exitcode=1 # = EXIT_FAILURE)
163
+ --leak-check=full
164
+ --quiet
165
+ --show-leak-kinds=all )
171
166
172
167
file (GLOB ${PROJECT_NAME} _TEST_SS ${CMAKE_CURRENT_SOURCE_DIR} /test /*.ss)
173
168
174
169
foreach (EACH IN LISTS ${PROJECT_NAME} _TEST_SS)
175
170
get_filename_component (FILENAME ${EACH} NAME_WE )
176
- add_test (NAME ${FILENAME}
177
- COMMAND ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND}
178
- ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND_OPTIONS}
179
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /meevax
180
- ${EACH} )
171
+ add_test (
172
+ NAME ${FILENAME}
173
+ COMMAND ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND}
174
+ ${${PROJECT_NAME} _MEMORY_CHECK_OPTIONS}
175
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /meevax
176
+ ${EACH} )
181
177
endforeach ()
182
178
183
179
file (GLOB ${PROJECT_NAME} _TEST_CPP ${CMAKE_CURRENT_SOURCE_DIR} /test /*.cpp)
@@ -187,10 +183,11 @@ foreach(EACH IN LISTS ${PROJECT_NAME}_TEST_CPP)
187
183
add_executable (assert-${FILENAME} ${EACH} )
188
184
add_dependencies (assert-${FILENAME} basis)
189
185
target_link_libraries (assert-${FILENAME} PRIVATE kernel)
190
- add_test (NAME assert-${FILENAME}
191
- COMMAND ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND}
192
- ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND_OPTIONS}
193
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /assert-${FILENAME} )
186
+ add_test (
187
+ NAME assert-${FILENAME}
188
+ COMMAND ${${PROJECT_NAME} _MEMORY_CHECK_COMMAND}
189
+ ${${PROJECT_NAME} _MEMORY_CHECK_OPTIONS}
190
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /assert-${FILENAME} )
194
191
endforeach ()
195
192
196
193
# ---- Additional Targets ------------------------------------------------------
0 commit comments