diff --git a/apitest/README b/apitest/README index 61987bef4e2b6657aacdf98b5942c84e7020b796..7516a6aafb1afc4a30bf34265765b054ed2d6673 100644 --- a/apitest/README +++ b/apitest/README @@ -4,7 +4,7 @@ FORTRAN 0) build libbinary_c.so 1) run the script ./Make_fortran -2) export LD_LIBRARY_PATH=../src/ +2) export LD_LIBRARY_PATH=../src/:$LD_LIBRARY_PATH 3) ./apitest-f90 ************************************************************ @@ -21,7 +21,9 @@ To build the api test: 3) In the binary_c directory, run -./configure && make cleanall && make && make libbinary_c.so +meson builddir +cd builddir +ninja binary_c_install_legacy 4) Enter the 'apitest' directory diff --git a/apitest/apitest.c b/apitest/apitest.c index 038323ac3ec7d81be0b16196c8ea007382e030ba..767c96ee111a4c165b4d888b0009a414a58ff425 100644 --- a/apitest/apitest.c +++ b/apitest/apitest.c @@ -125,7 +125,7 @@ int main ( int argc, char * * argv ) -1); //binary_c_help(stardata[0],"M_1"); - + fprintf(stderr, "stardata[%d] = %p; preferences %p\n", i, diff --git a/doc/binary_c2.pdf b/doc/binary_c2.pdf index 9a4a8738e4e99c903b4ab0d3a686749829b946b3..daf97d3f9842f766039b9a4f5f838af237695972 100644 Binary files a/doc/binary_c2.pdf and b/doc/binary_c2.pdf differ diff --git a/doc/binary_grid2.lyx b/doc/binary_grid2.lyx index 380245540aad7397f8ea588c44f9f52fc7ff298f..85320efb0b847271e2ab6eb958e34fb7f3cec40f 100644 --- a/doc/binary_grid2.lyx +++ b/doc/binary_grid2.lyx @@ -5443,21 +5443,7 @@ libbinary_c.so \end_inset - with debugging (e.g. -\begin_inset space ~ -\end_inset - - -\begin_inset Flex Command -status open - -\begin_layout Plain Layout -configure debug -\end_layout - -\end_inset - -) you should see a stack trace so that you can debug the crash. + with debugging you should see a stack trace so that you can debug the crash. With the \begin_inset Flex ScriptingLanguage status open @@ -6562,7 +6548,7 @@ status open \end_layout \begin_layout Description -Binary_c You should configure +Binary_c You should set up \begin_inset Formula $\binaryc$ \end_inset @@ -6574,39 +6560,26 @@ status open \begin_layout Plain Layout -./configure generic +meson builddir -Dgeneric=true \end_layout \end_inset - or by setting -\begin_inset Flex Envvar +before compiling with +\begin_inset Flex Software status open \begin_layout Plain Layout -ARCHFLAGS +ninja \end_layout \end_inset - prior to the build, e.g., +. \begin_inset Newline newline \end_inset - -\begin_inset listings -lstparams "language=bash" -inline false -status open - -\begin_layout Plain Layout - -export ARCHFLAGS="-mtune=generic -march=generic" -\end_layout - -\end_inset - -You will need to completely rebuild +You may need to completely rebuild \begin_inset Formula $\binaryc$ \end_inset @@ -7810,6 +7783,12 @@ Random \end_layout \begin_layout Standard +\begin_inset CommandInset label +LatexCommand label +name "subsec:Random-segmentation-faults" + +\end_inset + Sometimes you may find that the grid does not start. This looks like a random segmentation fault (such faults are almost never random). @@ -7861,7 +7840,22 @@ status open \begin_layout Plain Layout -./configure; make cleanall; make; make libbinary_c.so +rm builddir # if necessary +\end_layout + +\begin_layout Plain Layout + +meson builddir -Dgeneric=true +\end_layout + +\begin_layout Plain Layout + +cd builddir +\end_layout + +\begin_layout Plain Layout + +ninja binary_c_install_legacy \end_layout \end_inset @@ -7954,7 +7948,29 @@ Perl (and its modules) is incompatible with the architecture on one of your slots. - This problem can overcome by: + +\end_layout + +\begin_layout Standard +You should be able to overcome this with a generic build (see Sec. +\begin_inset space ~ +\end_inset + + +\begin_inset CommandInset ref +LatexCommand ref +reference "subsec:Random-segmentation-faults" +plural "false" +caps "false" +noprefix "false" + +\end_inset + + above). +\end_layout + +\begin_layout Standard +With the old configure script, this problem can overcome by: \end_layout \begin_layout Itemize diff --git a/doc/tbse.help b/doc/tbse.help index 71925f202efc9954a08da237e3015d3ef2590853..d69c3292ebba1e504103de28a5605e0de19f2868 100644 --- a/doc/tbse.help +++ b/doc/tbse.help @@ -69,15 +69,15 @@ option flags for debugging debug Run binary_c through gdb. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. valgrind Run binary_c through valgrind's memcheck (its default). - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. valgrind_args Show the arguments that would be sent to valgrind but do not run binary_c. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. multicore_valgrind <nthreads> Runs binary_c through valgrind on multiple cores. Useful for running @@ -85,29 +85,29 @@ multicore_valgrind <nthreads> massif Run binary_c through valgrind's massif tool. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. callgrind Run binary_c through valgrind's callgrind tool. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. cachegrind Run binary_c through valgrind's cachegrind tool. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. ptrcheck Run binary_c through valgrind's ptrcheck tool. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. drd Run binary_c through valgrind's drd tool. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. gprof gprof_with_stdout gprof_lines Run binary_c through the gprof profiler. - Note that you have to build with debugging (./configure debug). + Note that you have to build with debugging. ------------------------------------------------------------ diff --git a/src/API/binary_c_help.c b/src/API/binary_c_help.c index ef6cd6dd3e2c243ceef068d2f3fa65759a2a7b63..daac0e82f64658a98602d3266fb246f2a59fb2c3 100644 --- a/src/API/binary_c_help.c +++ b/src/API/binary_c_help.c @@ -15,25 +15,30 @@ void binary_c_API_function binary_c_help(struct stardata_t * RESTRICT const star const int argc = 2; char ** argv = Malloc(argc * sizeof(char *)); - asprintf(&argv[0],"binary_c"); - argv[1] = argstring; - - struct tmpstore_t * tmpstore = stardata->tmpstore; - if(tmpstore == NULL) + if(argv != NULL) { - build_tmpstore_contents(tmpstore); + if(asprintf(&argv[0],"binary_c")) + { + argv[1] = argstring; + + struct tmpstore_t * tmpstore = stardata->tmpstore; + if(tmpstore == NULL) + { + build_tmpstore_contents(tmpstore); + } + binary_c_help_from_arg( + stardata->tmpstore->cmd_line_args, + stardata, + &c, + 0, // dummy var + stardata->tmpstore->arg_count, // arg_count + argv, + -argc // argc + ); + Safe_free(argv[0]); + } + Safe_free(argv); } - binary_c_help_from_arg( - stardata->tmpstore->cmd_line_args, - stardata, - &c, - 0, // dummy var - stardata->tmpstore->arg_count, // arg_count - argv, - -argc // argc - ); - Safe_free(argv[0]); - Safe_free(argv); } } #endif//BINARY_C_API diff --git a/src/nucsyn/nucsyn_s_process.c b/src/nucsyn/nucsyn_s_process.c index a667039d45a9719a61ec7e06c121ef1c8868a50a..a202e121554f6e5978ad4822fbceb95e74f87874 100644 --- a/src/nucsyn/nucsyn_s_process.c +++ b/src/nucsyn/nucsyn_s_process.c @@ -37,8 +37,8 @@ void nucsyn_s_process(Abundance * RESTRICT const dup_material, * * 01/09/2016 : Move data to the store * - * 05/04/2017 : Default to putting the data in with objcopy and a - * make_data_objects.sh script in ./configure + * 05/04/2017 : Default to putting the data in with objcopy and use + * make_data_objects.sh (or meson/make_dataobjects.sh) * * The data table has the form: * diff --git a/src/tables/table_s_process.c b/src/tables/table_s_process.c index 3722ef5bd8a1807185e9df8561357ec4da7a70bf..1a528c8ac95bc7a24712c91837945a124989847f 100644 --- a/src/tables/table_s_process.c +++ b/src/tables/table_s_process.c @@ -116,7 +116,7 @@ void table_s_process(struct store_t * RESTRICT const store) * idea taken from * https://balau82.wordpress.com/2012/02/19/linking-a-binary-blob-with-gcc/ * - * 1: compile with gcc (./configure cc=gcc; make clean; make) and NUCSYN_GENERATE_SBIN defined + * 1: compile with gcc and NUCSYN_GENERATE_SBIN defined * (see above), and run binary_c for a star that has thermal pulses. * This generates the file /tmp/s.bin containing a binary dump of the data table. * (ignore any segfault as long as it says "file closed successfully") @@ -129,13 +129,8 @@ void table_s_process(struct store_t * RESTRICT const store) * * 4: comment out the line above: "#define NUCSYN_GENERATE_SBIN" * - * 5: configure and build with icc (./configure cc=icc;make) - * (note do NOT make clean here!) + * 5: build with icc * - * You will want to configure for the machine on which the executable - * will run, which may not be that on which it is built! There's currently - * no easy way to do this, but such functionality may come to binary_c - * in the future. Of course, you can hack src/Makefile as appropriate. * * You may have to redefine SPROC_SYMBOL_NAME (see below) *