Use C utility instead of awk for header generation in cmake builds
This commit is contained in:
parent
51954572c6
commit
e65a3d3ee4
|
@ -224,16 +224,21 @@ install(TARGETS ${OpenBLAS_LIBNAME}
|
|||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
|
||||
|
||||
# Install include files
|
||||
add_executable(gen_config_h gen_config_h.c)
|
||||
target_compile_definitions(gen_config_h PRIVATE VERSION=\"${OpenBLAS_VERSION}\")
|
||||
message (STATUS "Generating openblas_config.h in ${CMAKE_BINARY_DIR}")
|
||||
ADD_CUSTOM_TARGET(genconfig
|
||||
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_CONFIG_H\" \; print \"\#define OPENBLAS_CONFIG_H\"}(ARGIND==1&&NF>0){print $$1,"OPENBLAS_"$$2, $$3 \; next} \; ARGIND==2{ print}END{print \"\#define OPENBLAS_VERSION \\"${OpenBLAS_VERSION}\\"\" \; print \"\#endif /* OPENBLAS_CONFIG_H */\"}' ${CMAKE_CURRENT_SOURCE_DIR}/config.h ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h > "${CMAKE_BINARY_DIR}/openblas_config.h"
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/openblas_config.h
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
||||
COMMAND ${CMAKE_BINARY_DIR}/gen_config_h ${CMAKE_CURRENT_SOURCE_DIR}/config.h ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h > ${CMAKE_BINARY_DIR}/openblas_config.h
|
||||
)
|
||||
ADD_CUSTOM_TARGET(genconfig DEPENDS openblas_config.h)
|
||||
add_dependencies( ${OpenBLAS_LIBNAME} genconfig genf77blas)
|
||||
install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
|
||||
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
ADD_CUSTOM_TARGET(genf77blas
|
||||
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"} \; NF {print}\; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h
|
||||
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"}; NF {print}; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h
|
||||
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
||||
)
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
int main(int argc, char**argv) {
|
||||
FILE *fp;
|
||||
char line[100];
|
||||
char line2[80];
|
||||
char *s;
|
||||
int i;
|
||||
|
||||
fprintf(stdout,"#ifndef OPENBLAS_CONFIG_H\n");
|
||||
fprintf(stdout,"#define OPENBLAS_CONFIG_H\n");
|
||||
fp=fopen(argv[1],"r");
|
||||
do{
|
||||
s=fgets(line,80,fp);
|
||||
if (s== NULL) break;
|
||||
memset(line2,0,80);
|
||||
i=sscanf(line,"#define %70c",line2);
|
||||
if (i>0) {
|
||||
fprintf(stdout,"#define OPENBLAS_%s",line2);
|
||||
} else {
|
||||
fprintf(stdout,"\n");
|
||||
}
|
||||
} while (1);
|
||||
fclose(fp);
|
||||
fprintf(stdout,"#define OPENBLAS_VERSION \"OpenBLAS %s\"\n", VERSION);
|
||||
fp=fopen(argv[2],"r");
|
||||
do{
|
||||
s=fgets(line,100,fp);
|
||||
if (s== NULL) break;
|
||||
fprintf(stdout,"%s",line);
|
||||
} while(1);
|
||||
fclose(fp);
|
||||
fprintf(stdout,"#endif /* OPENBLAS_CONFIG_H */\n");
|
||||
exit(0);
|
||||
}
|
Loading…
Reference in New Issue